【问题标题】:Stuck in a while loop only sometimes只是有时卡在一个while循环中
【发布时间】:2015-12-23 20:54:01
【问题描述】:

我很想弄清楚为什么我不能离开循环。如果我的布尔值 forward 设置为 true,我需要做的是离开循环。 (布尔值已在 while 循环上方设置为 false。

当我运行下面的代码 sn-p 并输入一个正数时,我只能输入无限数量的数字。当我输入一个负数时,我会收到一个提示,告诉我这是不允许的,然后再试一次。之后,我陷入了上述类似情况。我接下来输入什么并不重要,它只会一遍又一遍地输入。

{
        while (forward == false)
            if (n2 == 0)
            {
                System.out.println("Sorry, the 0 is not a valid entry for the second number, try again!");
                n2 = in.nextInt();
            }   
            else 
            {
                forward = true;
            }
    }

【问题讨论】:

    标签: java while-loop boolean


    【解决方案1】:

    你可以不使用额外的变量而侥幸

    n2 = in.nextInt();
    while (input == 0){
        System.out.println("Sorry, 0 is not valid input");
        n2 = in.nextInt();
    }
    

    【讨论】:

      【解决方案2】:

      由于forward是一个布尔值,你可以直接使用它而不是比较

      forward == false

      如果你想使用这个变量(我不会通过最好的方式来实现你的目标),你可以执行以下操作:

      while (!forward) {
         if (n2 == 0) {
            System.out.println("Sorry, the 0 is not a valid entry for the second number, try again!");
            n2 = in.nextInt();
         } else {
            forward = true;
         }
      }
      

      【讨论】:

        【解决方案3】:

        您是否有一个外部 while 循环让您回到您的 while 循环?解决循环问题的一种有效方法是一次调试一行代码。

        如果您在 Eclipse 中,请在进入 while 循环之前单击行号来设置断点(程序将暂停的地方)。然后运行程序,您将看到当前行突出显示。然后通过反复按 F6 逐行移动。在底部窗格中,您还可以找到变量的当前值。

        现在,如果您逐行检查代码,您将更好地了解发生了什么。

        【讨论】:

          猜你喜欢
          • 2011-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-28
          • 2019-10-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多