我无法弄清楚为什么下面的代码不会继续,并且非常感谢任何帮助。
此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*/
答案 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。尝试上面的代码,它将解决问题。