问题与while循环

时间:2014-04-09 04:30:38

标签: java loops while-loop boolean

我无法弄清楚为什么下面的代码不会继续,并且非常感谢任何帮助。

此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*/

3 个答案:

答案 0 :(得分:2)

while(flag=true)更改为while(flag==true)或仅while(flag)

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

如果while内的语句求值为true,则执行循环。在您的情况下,flag被分配到true,然后检查flag的值。所以始终是true

答案 1 :(得分:1)

使用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.

答案 2 :(得分: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。尝试上面的代码,它将解决问题。