Я пытаюсь написать программу, чтобы попросить пользователя ввести свой возраст и предложить ввести его повторно, если они введут неправильное значение (например, отрицательное число, старше 120, возраст со специальными символами или буквами,номер вне диапазона и т. д. ...)
Я попытался написать попытку / перехватить, чтобы попросить пользователя повторно ввести свой возраст:
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();
}
Когда введенный возраст содержит специальные символы/ букв или находится за пределами допустимого диапазона, программа выводит слова «Плохой возраст. Повторно введите свой возраст (положительное целое число)», однако сразу же завершается с этой ошибкой:
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)
MyЦель состоит в том, чтобы программа продолжала запрашивать допустимый возраст, пока пользователь не получит свое право.Буду очень признателен за любые отзывы и помощь.Я новичок в 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): ");
}
}