我正在尝试编写一种getInt()
方法,该方法将从控制台中提取整数提取到程序的其余部分。
在内部,尝试使用资源-资源是扫描程序;加上不可避免的InputMismatchException
的捕获块。
它捕获有效输入,很好;并捕获错误的输入。
但是,在递归地尝试捕获输入之后,我的扫描仪立即抛出了NoSuchElementException
,这显然与上一个失配错误有关。
我是否需要在第二台扫描仪中清除某些东西,也许是第一台扫描仪遗留下来的东西?
private static int getInt(String name) {
try (Scanner scanner = new Scanner(System.in)) {
System.out.printf("Enter %s: ", name);
return scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("Invalid");
return getInt(name);
}
}
我已经尝试实例化扫描器的功能,就像这样:
Scanner scanner = new Scanner(System.in);
getInt(scanner, name);
...
private static int getInt(Scanner scanner, String name) {
try {
System.out.printf("Enter %s: ", name);
return scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("Invalid");
return getInt(scanner, name);
}
}
在这里,由于不匹配错误再次发生,我只是得到了栈溢出错误。