随机问答

时间:2016-02-15 12:31:12

标签: java arraylist

我正在制作一个有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中)。

提前致谢!

1 个答案:

答案 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]);
    }
}