当我输入非整数输入时,为什么我的代码会运行到无限循环?

时间:2015-05-10 10:14:47

标签: java java.util.scanner inputmismatchexception

为什么我输入非数字令牌时会出现无限循环?

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);
            }     
        }            
    }
}

1 个答案:

答案 0 :(得分:2)

当我输入一个非整数输入时,你实际上要问"为什么我的代码会运行到无限循环"。

好吧,你需要在in.next()子句中调用catch来解决这个问题。为什么?请参阅Scanner文档:

  

当扫描程序抛出InputMismatchException时,扫描程序将不会传递导致异常的令牌,以便可以通过其他方法检索或跳过它。