【发布时间】:2014-07-04 21:51:48
【问题描述】:
我在这里的while循环有这个问题:
while((input = InputHandler.getInt()) != 1 && input != 2){
if(input == InputHandler.CODE_ERROR)
System.out.print("Input must be a number");
}
这个 while 循环只接受一次输入并且不会再次请求它,因此它会在整个时间内循环输入一次。我在这里做错了什么,因为对我来说,这个诡计循环的工作真的很奇怪?
InputHandler 类:
public class InputHandler {
public static Scanner in = new Scanner(System.in);
public static int CODE_ERROR = -6;
public static int getInt(){
try{
return in.nextInt();
} catch(InputMismatchException e){
return CODE_ERROR;
}
}
}
【问题讨论】:
-
只有当
input同时 等于 1 和 2 时,您的循环才会终止。这不会发生。对于任何值,eitherinput != 1orinput != 2将是真的......我怀疑你想要&&。 -
代码现在好像已经更新了。
-
@JonSkeet 是的,谢谢这个,现在它至少可以为正确的答案工作,但它仍然不能修复无效的答案无限循环状态,可以这么说。
-
我刚刚运行了现有的代码 - 似乎工作正常?
-
如果我提供了无效的输入,我会得到一个无限循环。
标签: java loops while-loop infinite-loop