Я пробовал использовать блок try/catch для обработки недопустимых входных данных, таких как строки, но у меня все еще возникают проблемы. . Например:
- Когда пользователь входит в строку, программа бросает inputmismatchexception и пропускает повторное высказывание пользователя.
- Я попробовал добавить Scanner.nextLine(), чтобы очистить входной буфер, но это не сработало должным образом.
Код: Выделить всё
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int userInput = -1;
while (userInput < 0) {
try {
System.out.print("Enter a positive number: ");
userInput = scanner.nextInt(); // Crashes if invalid input is entered
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter a valid number.");
scanner.nextLine(); // Attempt to clear the buffer, but it doesn't work
}
}
System.out.println("You entered: " + userInput);
scanner.close();
}
}
- При вводе недопустимого ввода (например, строки) программа пропускает повтор -подсказка пользователю.
- Я подозреваю, что возникла проблема с очисткой входного буфера с помощью Scanner.nextLine().
- Обертка Scanner.nextInt() внутри блока try/catch для перехвата исключения.
- Использование Scanner.nextLine() после перехвата исключение для очистки ввода.
Как можно Я правильно обрабатываю недопустимый ввод в этом сценарии, чтобы программа продолжала повторно запрашивать пользователя, пока не будет предоставлено допустимое положительное целое число?
Подробнее здесь: https://stackoverflow.com/questions/791 ... d-input-in