Dav*_*vid 7 java infinite-loop while-loop
boolean r = false ; int s = 0 ;
while (r == false) ;
{
s = getInt() ;
if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ;
else r = true ;
}
Run Code Online (Sandbox Code Playgroud)
即使输入3或123并且循环永不终止,文本也不会显示.这里有什么不对?
Dan*_*olo 33
在条件之后你有一个分号.当您使用大括号为您指定块时,请while不要使用分号.
其他人已经指出了这个错误,但是你的代码在其他方面是可怕的,最终会让你失望:
if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ;
else r = true ;
Run Code Online (Sandbox Code Playgroud)
这很糟糕,因为在ifor else子句的情况下,你可以很容易地打算运行多个语句.使用花括号并避免将条件语句放在一行上:
if (!(s>=0 && s<=2))
{
System.out.println ("try again not a valid response");
}
else
{
r = true;
}
Run Code Online (Sandbox Code Playgroud)
它更容易阅读,并且不太可能引入难以看到的错误.