Добавьте блок try-catch внутри цикла while. В противном случае исключение перехватывается после цикла, и когда вы обрабатываете исключение (в блоке catch), вы продолжаете выполнение потока, не прося пользователя повторить попытку.
Это не то, что вызывает вашу проблему, хотя. Если вы хотите просто напечатать ошибку и продолжить, вам следует переключить код на nextInt()
вместо next()
и parseInt()
. Тогда исключение будет правильным, и его будет легче читать. (В настоящее время вы, вероятно, получаете NumberFormatException
, когда вы пытаетесь анализировать String в Int вместо исключения при вводе - если вы хотите сделать это таким образом, измените исключение, которое вы пытаетесь перехватить)
int num1 = 0;
try {
num1 = s.nextInt();
while (num1 > 3 || num1 < 1) {
System.out.print("Please enter one of the three available options.\nYour Answer: ");
num1 = s.nextInt();
}
} catch (InputMismatchException e) {
System.out.println("Do not enter a letter/special character");
}