从http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28int%29:
“如果翻译成功,则扫描程序将前进经过匹配的输入。”
啊,但是如果翻译是什么 不是
成功的?在这种情况下,扫描仪不会前进超过任何输入。错误的输入数据将保留为下一个要扫描的内容,因此循环的下一次迭代将失败,就像上一个循环一样-
循环将不断尝试读取相同的错误输入。
为了防止无限循环,您必须提前越过不良数据,以便获取扫描程序可以读取为整数的值。下面的代码段通过调用input.next()来实现:
Scanner input = new Scanner(System.in); while(true){ try { int choice = input.nextInt(); System.out.println("Input was " + choice); } catch (InputMismatchException e){ String bad_input = input.next(); System.out.println("Bad input: " + bad_input); continue; } }


