我正在做一个小游戏,有三个不同的选择。首先,我创建了一个清单,总共有17个问题和答案。然后,为了确保订单是杂乱无章的,每次我玩游戏,我将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个独特的答案。我的目标是有三个不同的选择和随机顺序对每个问题,其中之一,当然,正确的。我是刚开始编程的,不知道怎么解决它。(一切都在Netbeans中)。
提前感谢!
发布于 2016-02-15 16:16:46
所以你有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]);
}
}https://stackoverflow.com/questions/35409461
复制相似问题