为什么我输入非数字令牌时会出现无限循环?
public class ExceptionHandling {
static int i;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
boolean b=true;
Scanner in=new Scanner(System.in);
while (b ==true) {
try{
i=in.nextInt();
b=false;
// System.out.println("not executrd bcoz above exception");
}
catch(InputMismatchException e){
System.out.println(i);
}
}
}
}
答案 0 :(得分:2)
当我输入一个非整数输入时,你实际上要问"为什么我的代码会运行到无限循环"。
好吧,你需要在in.next()
子句中调用catch
来解决这个问题。为什么?请参阅Scanner
文档:
当扫描程序抛出
InputMismatchException
时,扫描程序将不会传递导致异常的令牌,以便可以通过其他方法检索或跳过它。