【发布时间】:2018-03-27 10:37:31
【问题描述】:
如果输入在 1-26 之间,则返回该值。当我输入超过 27 的数字或字母时,它不会捕获并处理异常,只会跳过该行继续循环。
为什么会这样,我该如何解决?
public int checkInput(int userInput) {
boolean valid = false;
do {
try {
if (userInput <= 26 || userInput > 0) {
break;
}
valid = true;
} catch (NumberFormatException | InputMismatchException |
ArrayIndexOutOfBoundsException e) {
valid = false;
System.out.println("The input is invalid, please enter the answer again.");
userInput = sc.nextInt();
}
} while (!valid);
return userInput;
}
提前致谢
【问题讨论】:
-
您的代码不会抛出任何异常。因此永远不会到达 catch 块
-
这段代码甚至无法编译。
-
你应该抛出一个用户定义的异常而不是中断
-
如果您的意图是一直提示直到输入有效值,则无需抛出异常