【发布时间】:2011-02-06 07:54:31
【问题描述】:
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 ;
}
即使输入 3 或 123 并且循环永远不会终止,文本也不会显示自己。这里有什么问题?
【问题讨论】:
-
另外这不是一个无限循环,所以
infinite-loop标签没有意义。 -
其实是一个无限循环。
while (r == false) ;是一个不做任何事情的无限循环,因为 r 被初始化为 false。 -
停止尝试将多个东西放在一条线上。最重要的是,这就是导致您的问题的原因。一旦你养成了写清楚的习惯,你会发现这种事情发生的少得多。还将您在 Eclipse 中的警告设置得更高——它应该向您指出空语句。不要只解决这个问题,要解决根本原因。
-
GAAAAAAAHH!我的眼睛!!!请考虑对该 if 语句进行缩进。即使是最简单的控制语句也可以通过将所有内容都放在单行中而变得不可读,没有缩进,也没有打开/关闭大括号。此外,重新处理该 if 语句中的表达式,使其不使用否定 (!) 您很少希望使用复合布尔表达式的否定。
-
在调试器中单步执行此代码以查找问题不是更简单吗?
标签: java while-loop infinite-loop