当前位置: 首页 > 知识库问答 >
问题:

如何在循环Java的起跑点处得到一个新的随机数

黄信厚
2023-03-14

我对编码相当陌生,作为一个项目,我正在尝试创建一个实用的问答程序。理论上,这个程序应该做的是问你想要多少问题,然后给你随机选择的问题和相应的答案。在循环的每一次迭代中,它都应该给出一个新的问题和答案,但由于某种原因,它会重复给出相同的问题和答案。如有任何帮助,我们将不胜感激。

Random rand = new Random();
    int int_random = rand.nextInt(6);
    int storage = int_random;

    String[] questionV = {"Question 1", "Question 2", "Question 3", "Question 4", "Question 5"};
    String[] answerV = {"Answer 1", "Answer 2", "Answer 3", "Answer 4", "Answer 5",};

   public void question_answerV() {

        System.out.println("How many questions would you like? (1-5) ");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();

        switch (choice) {
            case 1:
                System.out.println(questionV[int_random]);
                System.out.println("Please press any number for the answer");
                Scanner scanner1 = new Scanner(System.in);
                int choiceA = scanner1.nextInt();
                System.out.println(answerV[storage]);
                break;

            case 2:
                for (int i = 0; i < 2 ; i++ ) {
                    System.out.println(questionV[int_random]);
                    System.out.println("Please press any number for the answer");
                    scanner1 = new Scanner(System.in);
                    choiceA = scanner1.nextInt();
                    System.out.println(answerV[storage]);
                }
                break;

            case 3:
                for (int i = 0; i < 3 ; i++ ) {
                    System.out.println(questionV[int_random]);
                    System.out.println("Please press any number for the answer");
                    scanner1 = new Scanner(System.in);
                    choiceA = scanner1.nextInt();
                    System.out.println(answerV[storage]);
                }
                break;

            case 4:
                for (int i = 0; i < 4 ; i++ ) {
                    System.out.println(questionV[int_random]);
                    System.out.println("Please press any number for the answer");
                    scanner1 = new Scanner(System.in);
                    choiceA = scanner1.nextInt();
                    System.out.println(answerV[storage]);
                }
                break;

            case 5:
                for (int i = 0; i < 5 ; i++ ) {
                    System.out.println(questionV[int_random]);
                    System.out.println("Please press any number for the answer");
                    scanner1 = new Scanner(System.in);
                    choiceA = scanner1.nextInt();
                    System.out.println(answerV[storage]);
                }
                break;
                

        }


    }

共有1个答案

郑向阳
2023-03-14

一些观察。

  • 如前所述,只使用一个扫描程序实例。
  • 您还在重复代码。只需使用(您打开的)选项作为循环终止值
  • 查看以下代码:
    • int_random从不更改。
    • 您提示输入ChoiceA但从未使用
    • 由于您一开始就将存储初始化为int_random,因此您将始终获得相同的Q和A
    for (int i = 0; i < 4 ; i++ ) {
      System.out.println(questionV[int_random]);
      System.out.println("Please press any number for the answer");
      scanner1 = new Scanner(System.in);
      choiceA = scanner1.nextInt();
      System.out.println(answerV[storage]);
    }
    

    如果(而且不清楚)你想随机选择问题和答案。

    >

  • 根据需要从0到n初始化ArrayList选项。

    调用collections.shuffle(list)随机化列表。

    然后只需从列表中选择一个以0,1,2.开头的问题号...使用list.get()。将获得的数字用于问题和答案。不再重复。

    我推荐一些防御性编程。确保choice在问题数组的范围内。如果是,让用户知道并重新提示。否则,可以得到ArrayIndexOutOfBoundsException

 类似资料:
  • 我想要这样的结果。依靠这个数组,我想在其中得到一个随机值。

  • 问题内容: 您好,我正在尝试为我的网站创建标签脚本,因此每次搜索引擎进入我的网站时,我的网站上都会显示10个不同的标签。 这些标签将从数据库中获取。因此,目前我已经对其进行了编码,因此它只能捕获一个。(因为我不知道该怎么做) 像这样 无论如何,我可以添加一点时间,以使其执行10次吗?例如,使用相同的回显,但打印出10个结果而不是1个。…我将限制从1更改为10,但这没有用…仍然显示一个… 问题答案:

  • 问题内容: 我需要一点帮助。 我将使用什么代码来创建一个5位数长,以1或2开头的随机数? 为了用作公司员工ID? 问题答案: 根据您处理问题的方式,类似以下内容: 或类似的东西(您可能想要实例化该方法的 Random 对象,但是为了简单起见,我将其放在此处): 这个想法是 1 + nextInt(2) 总是给出1或2。然后将其乘以10000以满足您的要求,然后在[0..9999]之间添加一个数字。

  • 我有一组在循环中无限次生成的字段。基本上2个输入字段,一个标签和一个删除按钮。然后是另一个按钮,上面写着添加更多。 每次他们点击这个按钮,就会出现一组以上提到的内容。他们可以想做多少次就做多少次。看起来像这样。(我使用的是类星体,因此为什么使用q-“”元素) 现在这是最基本的形式。我想做的是用已经开始的设定次数的迭代加载组件。例如,其中的5个。 如果他们需要更多,添加更多按钮将向前添加第6个。如果

  • 问题内容: 我遇到了一个问题,在这里我想使用GUI从python程序运行几个命令行功能。我不知道我的问题是否特定于 PyQt4, 或者是否与我对Python代码的错误使用有关。 我希望做的是在GUI上有一个标签,以更改其文本值以通知用户正在执行哪个命令。但是,当我使用 for 循环运行多个命令时,就会出现我的问题。我希望标签在每个循环中进行更新,但是,该程序不是在每个循环中更新GUI标签,而是仅在

  • 我有一个名为Card的类,我有一个for循环: 我想做的是基于for循环创建新实例。例如,我希望名字是card1、card2、card3等等。数字来自for循环。 我试过这个,但似乎不起作用: 谁能告诉我我做错了什么吗? 谢谢 所以我正在使用气垫船充满鳗鱼的解决方案,但我还有另一个问题。 我用的是卡片列表。添加(新卡()),当我尝试使用Card(I)设置名称时,java不允许我这么做。在没有i的情