首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >随机问答

随机问答
EN

Stack Overflow用户
提问于 2016-02-15 12:31:11
回答 1查看 191关注 0票数 0

我正在做一个小游戏,有三个不同的选择。首先,我创建了一个清单,总共有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中)。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 16:16:46

所以你有17个问题,每个问题都有一个正确的答案,你需要用三个建议的答案来显示每一个问题,其中一个是正确的,另外两个是错误的(但这些是对其他问题的正确答案)?

在程序开始时,只洗牌一次。然后,使用for循环按顺序呈现问题。不要删除已回答的问题;循环将确保每个问题只问一次。由于列表被洗牌,用户将无法预测问题。

然后,填写建议的答案:将正确的答案放在一个随机位置,然后用其他随机答案填充剩余的位置(使用while循环确保这些答案与正确的答案和彼此的答案不同)。

类似于:

代码语言:javascript
运行
复制
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]);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35409461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档