您的程序将永远运行,因为在
nextInt不更改扫描仪状态的情况下进行调用会一次又一次地引发异常:如果用户未输入
int,则调用
keyboard.nextInt()不会更改扫描仪的外观,因此,当您
keyboard.nextInt()在下一次迭代中进行调用时,您将获得一个例外。
您需要添加一些代码来读取用户在处理异常后输入的垃圾,以解决此问题:
try { ...} catch(Exception e) { System.out.println("Error: invalid input:" + e.getMessage()); again = true; keyboard.next(); // Ignore whatever is entered}注意:在这种情况下
nextInt(),您无需依赖异常:您可以调用
hasNextInt(),而不是调用,并检查扫描程序是否正在查看整数。



