我正在制作一个有3种不同选择的问答游戏。首先,我创建了一个包含17个问题和答案的列表。然后为了确保每次玩游戏时订单都是ramdomized,我会在开始时Collections.shuffle(MyList)
整个列表。
我的结构:
我在列表中的随机位置选择一个问题。但是,问题在0-2之间随机化,所以如果我得到“1”,我会得到像Mylist.get(1).getQuestion()
这样的问题。
选项/答案位于列表中的0-2位置。 (第一个选择是:Mylist.get(0).getAnswer()
,第二个Mylist.get(1).getAnswer()
和第三个Mylist.get(2).getAnswer()
)通过这样做,其中一个答案是正确的,因为问题的索引也在0之间-2。并保持正确的选择在随机的位置。
然而,问题是,每次我回答问题时,这个问题都会从列表中删除。 (Mylist.remove(1)
)所以,最后,剩下的项目将少于3个,我将不会有3个独特的答案。我的目标是在每个问题上有3个不同的随机顺序选择,其中一个当然是正确的。我是编程的新手,并不知道如何解决它。 (一切都在Netbeans中)。
提前致谢!
答案 0 :(得分:0)
所以你有17个问题,每个问题都有正确的答案,你需要用三个建议的答案来展示这些问题,其中一个是正确的,另外两个是错的(但这些是其他问题的正确答案) ?
在程序开头只对列表进行一次洗牌。然后,使用for
循环按顺序显示问题。不要删除已回答的问题;循环将确保每个问题只被询问一次。由于列表被洗牌,用户将无法预测问题。
然后,填写建议的答案:将正确答案放在随机位置,并使用随机的其他答案填充剩余的位置(使用while
循环以确保这些答案与正确答案不同彼此)。
类似的东西:
Collections.shuffle(MyList);
for(int i=0; i<MyList.size(); i++){
System.out.println(MyList.get(i).getQuestion();
Answer[] answers=new Answer[3];
int correct=(int)(Math.random()*3);
answers[correct]=MyList.get(i).getAnswer();
int j=i, k=i;
while( j==i ){
j = (int)(Math.random()*MyList.size());
}
answers[(correct+1)%3] = MyList.get(j).getAnswer();
while( k==i || k==j ){
k=(int)(Math.random()*MyList.size());
}
answers[(correct+2)%3] = MyList.get(k).getAnswer();
System.out.println("Answers:");
for(int t=0;t<3;t++){
System.out.println(answers[t]);
}
}