gpt4 book ai didi

java - Try-Catch 异常处理不提供正确的响应

转载 作者:行者123 更新时间:2023-12-03 08:46:15 26 4
gpt4 key购买 nike

我不知道为什么当我输入除整数值之外的任何内容时,输出不显示 Invalid Format! .

这就是我想要实现的异常处理。另外,如何关闭 Scannerfinally子句而不会导致无限循环。

class ConsoleInput {

public static int getValidatedInteger(int i, int j) {
Scanner scr = new Scanner(System.in);
int numInt = 0;

while (numInt < i || numInt > j) {
try {
System.out.print("Please input an integer between 4 and 19 inclusive: ");
numInt = scr.nextInt();

if (numInt < i || numInt > j) {
throw new Exception("Invalid Range!");
} else {
throw new InputMismatchException("Invalid Format!");
}

} catch (Exception ex) {
System.out.println(ex.getMessage());
scr.next();

}

}
scr.close();
return numInt;
}

这是我想要得到的输出:

最佳答案

如果您输入除 int 以外的任何内容,则会在该行抛出错误:

 numInt = scr.nextInt();

然后被捕获 block 捕获,从而跳过打印语句。您需要检查是否有下一个 int:
if(!scr.hasNextInt()) {
throw new InputMismatchException("Invalid Format!");
}

Also, how can I close the Scanner in a finally clause without causing an infinite loop.



您不需要关闭 Scanner在 finally block 中。事实上,你根本不应该关闭它。关闭 System.in 是不好的做法.通常,如果您没有打开资源,则不应关闭它。

关于java - Try-Catch 异常处理不提供正确的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com