【发布时间】:2019-02-21 22:27:11
【问题描述】:
我正在尝试编写一个程序来要求用户输入他们的年龄,如果他们输入了不正确的值(例如负数、大于 120、带有特殊字符或字母的年龄、超出范围的数字等...)
我尝试编写一个 try/catch 来要求用户重新输入他们的年龄:
System.out.println("Enter your age (a positive integer): ");
int num;
try {
num = in.nextInt();
while (num < 0 || num > 120) {
System.out.println("Bad age. Re-enter your age (a positive integer): ");
num = in.nextInt();
}
} catch (InputMismatchException e) {
//System.out.println(e);
System.out.println("Bad age. Re-enter your age (a positive integer): ");
num = in.nextInt();
}
当输入的年龄包含特殊字符/字母或超出范围时,程序会打印出“Bad age. Re-enter your age (a positive integer)”字样,但随后会立即终止并出现以下错误:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Unknown Source)
at java.base/java.util.Scanner.next(Unknown Source)
at java.base/java.util.Scanner.nextInt(Unknown Source)
at java.base/java.util.Scanner.nextInt(Unknown Source)
at Age.main(Age.java:21)
我的目标是让程序继续提示输入有效年龄,直到用户正确为止。 我非常感谢任何反馈和帮助。我是一个java初学者:) 谢谢
我尝试将整个代码更改为 while 循环,但随后导致无限循环...请帮助!
while (num < 0 || num > 120) {
try {
System.out.println("Bad age. Re-enter your age (a positive integer): ");
num = in.nextInt();
} catch (InputMismatchException e) {
System.out.println("Bad age. Re-enter your age (a positive integer): ");
}
}
【问题讨论】:
-
不要。而是将
try-catch块放在loop中,然后继续循环直到你得到你需要的东西 -
@MadProgrammer 你能解释一下你的意思吗?我应该把它放在哪个循环中?
-
@taralee98 由于您的示例代码中只有一个循环,而不是那个
-
@MadProgrammer 我试过了,但它导致了一个无限循环:(我发布了上面的代码。知道我哪里出错了吗?
标签: java exception exception-handling try-catch inputmismatchexception