2016-03-07 72 views
0

我想创建一个简单的问卷调查程序 - 将会有五个问题和四个答案。每次运行时,问题和答案的顺序都是随机的。简单的问卷调查程序

例:

第一次运行:

  1. 什么是果红色? a。苹果b.Pineapple c。橙色d。梨

  2. 什么形状有三面? a。广场b。圈子 c。三角形d。八角

第二次运行:

  1. 什么形状有三面? a。八角形b。广场 c。圈子d。三角形
  2. 什么是水果红色? a。橙色b。苹果 c。梨d。菠萝

- 编辑 - 这是我根据提出的建议守则草案:

public static void main(String[] args) { 
    Scanner input = new Scanner (System.in); 
    Random rand = new Random(); 

    ArrayList<ArrayList<String>> arrList = new ArrayList<ArrayList<String>>(); 
    ArrayList<String> question = new ArrayList<String>(); 
    ArrayList<String> choiceShuffle = new ArrayList<String>(); 
    ArrayList<String> choice1 = new ArrayList<String>(); 
    ArrayList<String> choice2 = new ArrayList<String>(); 
    ArrayList<String> choice3 = new ArrayList<String>(); 

    int numQuestion = 3; 
    int randomNum = rand.nextInt(numQuestion); 
    int score = 0; 
    String questionShuffle; 
    questionShuffle = question.get(randomNum); 
    choiceShuffle = arrList.get(randomNum); 

    question.add("What is after a?"); 
    question.add("What is after b?"); 
    question.add("What is after c?"); 

    choice1.add("a"); choice1.add("b"); choice1.add("c"); 
    choice2.add("d"); choice2.add("c"); choice2.add("e"); 
    choice3.add("d"); choice3.add("a"); choice3.add("b"); 

    arrList.add(choice1); 
    arrList.add(choice2); 
    arrList.add(choice3); 

    for (int x = 1; x <= question.size(); x++){ 
     System.out.print(question.get(randomNum)); 
     Collections.shuffle(choiceShuffle); 
     System.out.println(choiceShuffle); 
    } 
} 

}

我要去哪里错了吗?我也想创建一个名为“分数”的变量,只要选择了正确的答案,它就会启动分数++。打开建议。

+0

你尝试过什么吗? 'String [] questions = new String [] {“Q1”,“Q2”};' –

+0

查看数组和Random对象是否有一个好的起点。如果您在使用这些设备时遇到问题,请发送具体问题的其他问题。一种开始的方法是创建两个数组,一个用于问题,另一个用于解答两个数组的相同索引中的问题和答案,并使用Random对象获取0到数组大小之间的整数,然后然后显示问题的答案 – NiallMitch14

回答

3

您可以使用Java中可用的Random类生成随机数。

Random rand = new Random(); 
int randomNum = rand.nextInt((max - min) + 1) + min; 

最大这里将是你的问题的数量和你的具体情况,您可以设置最小为0,你可以使用Swing类来设计自己的GUI。大多数IDE(如NetBeans/Eclipse)都可以在不编写显式代码的情况下创建GUI。现在取决于你的随机数,你可以访问question[rand]。你可以实现你的问题和答案为arraylists并作为问题[rand]访问你的问题。您可以使用

Collections.shuffle(answerList);来打乱您的相应答案列表。

编辑:这里是供您参考的样本代码:

进口的java.util.ArrayList; import java.util.Iterator; import java.util.Random; import java.util。集合;

公共类JavaApplication1 {

public static void main(String[] args) { 
    /** * Create ArrayList in ArrayList Object */ 
ArrayList<ArrayList<String>> quesAns = new ArrayList<ArrayList<String>>(); 
ArrayList<String> answer = new ArrayList<String>(); 
ArrayList<String> question = new ArrayList<String>(); 
question.add("what's your fruit?"); 
question.add("what's your shape?"); 
answer.add("apple"); 
answer.add("banana"); 
answer.add("mango"); 
quesAns.add(answer); 
ArrayList<String> answer2 = new ArrayList<String>(); 
answer2.add("circle"); 
answer2.add("rectangle"); 
quesAns.add(answer2); 
Random rand = new Random(); 
numQues = 2 
int randomNum = rand.nextInt(numQues); 
System.out.println (question.get(randomNum)); 
ArrayList<String> answerListShuffle = new ArrayList<String>(); 
answerListShuffle = quesAns.get(randomNum); 
Collections.shuffle(answerListShuffle); 
System.out.println(answerListShuffle); 

} 

}

这仅仅是一个示例实现。你可以组成这些排序列表并添加元素,这取决于元素的数量,这取决于元素的数量。

+0

我看到,我开始创建两个数组:第一个问题是String []问题,然后第二个数组是为答案是二维数组。字符串[] []回答。问题是,我不知道我将如何协调或捆绑问题的具体答案,同时让他们在程序运行时随机显示。感谢您的回复。 –

+0

更好的是,您还可以使用arraylist的数组列表,这样您的所有问题和相应的答案都可以保持组织并相互绑定。在数组上使用数组列表的好处是可以动态分配大小,并且不会绑定到给定的大小。 –

+0

使用arraylist的arraylist会让你连结你的问题的答案。我给你一个例子:private static ArrayList > ques_ans = new ArrayList >();这是你的ques_ans结构,现在你可以向这个列表添加问题,这将构成外部列表,并且与它们对应的答案将构成内部列表,每个问题对应一个列表。您可以参考http://examplesofjava.com/arraylist/array-list-in-array-list-example.html –

0

最好使用HashMap。因为使用HashMap,您可以将问题对象的答案对象映射到一起。我认为这很容易。