【问题标题】:while loop inside for loop, confused?while 循环里面的 for 循环,困惑?
【发布时间】:2020-03-07 12:56:39
【问题描述】:

对编程完全陌生,我正在做一个项目,我对如何使它工作感到困惑。请帮帮我

        boolean answer1 = true; 
        for (int i=0;i<q.questionbank.length;++i)
       {   q.Question = input(q.questionbank[i]);

        while(answer1 == true)
       {

        if (q.Question.equals(a.correctans) || (q.Question.equals(a.impossibleans) || (q.Question.equals(a.wrongans))))
        {
            score = printquiz(answer,score,q.Question);
            answer1 = false;
        }
        else
        {
            print("Not a Valid Answer, please try again\n");
        }
    }
    }
    return score;

在这里,我有一门课,叫做问题库和测验。更正/不可能/错误是测验数据类型的一部分。而 q.question 是问题库的一部分。我对问题库数据类型中的数组有一些疑问。我想使用 for 循环来解决问题,如果用户输入正确的答案,分数就会上升。它适用于第一个问题,但不适用于第二个问题。通常当他们回答正确时,我有另一种方法 printquiz 有决策语句来告诉用户他们的答案是正确还是错误,并为他们分配分数。但在循环的第一次迭代之后,它甚至不会使用该方法。我对正在发生的事情感到困惑。请帮帮我

【问题讨论】:

  • 我猜你需要在for 循环内初始化answer1,但在while 循环之前。
  • @FredLarson OMG 成功了。 Wtf 在发帖之前我花了 1 小时尝试不同的东西。我不敢相信一件简单的事情解决了它

标签: java arrays for-loop while-loop abstract-data-type


【解决方案1】:

第二次不起作用,因为您将answer1 设置为false 并且再也没有将其设置回true。因此,在第一次到达 if 语句中的 answer1 = false 代码行之后,不再进入 while 循环(= 不再评估为 true)。

要解决此问题,请尝试将 answer1 = true 放在 for 循环中,在 while 循环之前。

【讨论】:

  • 是的,你是对的。我是一个白痴。不过感谢您的回答。我快要在这里发疯了
【解决方案2】:

这就是我的设置方式。假设答案是错误的,直到你得到一个。然后将其设置为 true 以退出循环。

    for (int i = 0; i < q.questionbank.length; ++i) {
        q.Question = input(q.questionbank[i]);

        answer1 = false;
        while (!answer1) {

            if (q.Question.equals(a.correctans) || (q.Question.equals(a.impossibleans) || (q.Question.equals(a.wrongans)))) {
                score = printquiz(answer, score, q.Question);
                answer1 = true;
            } else {
                print("Not a Valid Answer, please try again\n");
            }
        }
    }

【讨论】:

  • 谢谢。显然将布尔 answer1 放在 for 循环中可以修复它。我不知道为什么,但这行得通。我确实花了一个小时试图弄清楚这一点。我不敢相信把它放进作品里
  • 它必须在 for 循环内,因为 while 循环期望它在 while 循环开始时被初始化。在while循环期间,它最终被设置(在你原来的问题中)为假。然后它会一直保持假,直到退出 for 循环 - 除非它被重置为初始值。
  • 是的。我现在明白了。谢谢
猜你喜欢
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多