Java.util.scannererror handling
我正在帮助一个有java问题的朋友。 但是,我们遇到了障碍。 我们正在使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,并不断询问用户是否提供了其他内容。 唯一的问题是,我们无法弄清楚如何做错误的handeling。
我们尝试过的:
do { int reloop = 0; try { number = nextInt(); } catch (Exception e) { System.out.println ("Please enter a number!"); reloop ++; } } while(reloop != 0);
唯一的问题是,如果你输入的不是数字,这就会无限循环。
有帮助吗?
如果执行nextInt()
,则可以使用hasNextInt()
来validationScanner
是否成功。 如果你想跳过“垃圾”,你也可以调用并丢弃nextLine()
。
所以,像这样:
Scanner sc = new Scanner(System.in); while (!sc.hasNextInt()) { System.out.println("int, please!"); sc.nextLine(); } int num = sc.nextInt(); System.out.println("Thank you! (" + num + ")");
也可以看看:
- 如果输入错误的类型,如何防止扫描程序抛出exception? (Java)的
代码的问题,除了不必要的详细error handling,因为你让nextInt()
抛出一个InputMismatchException
而不是检查hasNextInt()
,就是当它抛出exception时,你不会使Scanner
超越问题输入! 这就是你获得无限循环的原因!
您可以调用并丢弃nextLine()
来解决此问题,但更好的方法是使用上面提到的无exception的hasNextInt()
预检查技术。
如果数字是非int,则会弹出exception,如果不是reloop将变为1,循环将退出
int reloop = 0; do { try { number = nextInt(); reloop ++; } catch (Exception e) { System.out.println ("Please enter a number!"); }} while(reloop == 0);