Как правильно использовать блок try/catch в цикле while для обработки недопустимого ввода в Java?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно использовать блок try/catch в цикле while для обработки недопустимого ввода в Java?

Сообщение Anonymous »

Я пытаюсь написать программу на Java, которая просит пользователя ввести положительное целое число внутри цикла while. Цикл должен продолжаться до тех пор, пока не будут предоставлены действительные входные данные.
Я пробовал использовать блок 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»