【问题标题】:Issue with a while loopwhile循环的问题
【发布时间】:2014-05-22 01:57:00
【问题描述】:

我终其一生都无法弄清楚为什么下面的代码没有继续运行,并且非常感谢任何帮助。

此 while 循环的目的是确保用户输入对提示的有效响应。

boolean flag = true;
while(flag=true){
            flag=true;
            System.out.println("yes to continue. type \"y\" only");
            s = input.nextLine(); // assume user enters either "y" here
            if ( (s.equals("y")){
                flag=false;
            }
        }
/*code im trying to reach*/

【问题讨论】:

  • while(flag==true) 或 while(flag)

标签: java loops while-loop boolean


【解决方案1】:
boolean flag = true;
while(flag){
      System.out.println("yes to continue. type \"y\" only");
      s = input.nextLine(); // assume user enters either "y" here
      if ( (s.equals("y")){
         flag=false;
      }
}

您在 while 条件内再次将 flag 分配为 true。所以它转换为一个永无止境的循环。无论您在循环中检查什么,它都是正确的,因为您分配了 true。试试上面的代码,它会解决这个问题。

【讨论】:

  • 不,它不会是never ending loop。一旦用户输入yflag 将被分配一个值false,在随后的迭代中,while(flag) 将是false,并且不会被执行。
【解决方案2】:

使用break。不需要标志。

通过修改您的示例更简单的代码:

while(true)
{
        System.out.println("yes to continue. type \"y\" only");
        s = input.nextLine(); // assume user enters either "y" here
        if (s.equals("y")
        {
            break;
        }
}

// On break (user enters 'y'), the code below this snippet would get executed.

【讨论】:

    【解决方案3】:

    while(flag=true) 更改为while(flag==true) 或简单地while(flag)

    = 是赋值运算符。而== 是相等运算符。

    如果while 中的语句计算结果为true,则执行循环。在您的情况下,flag 被分配给true,然后检查flag 的值。所以它总是true

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2013-12-10
      • 2017-08-11
      • 1970-01-01
      相关资源
      最近更新 更多