Как отобразить сообщение об ошибке при неправильном вводе?

#java #error-handling

Вопрос:

Я пытаюсь распечатать сообщение, когда вводится неверный ввод. Например, переменная задается как целое число, но пользователь вводит строку. Я прикрепил свой код ниже. Я не могу понять, как охватить это исключение.

импорт java.util.Сканер;

общедоступный класс Paint1 {

 public static void main(String[] args) {
    Scanner scnr = new Scanner(System.in);
    double wallHeight = 0.0;
    double wallWidth = 0.0;
    double wallArea = 0.0;
    double gallonsPaintNeeded = 0.0;
    
    final double squareFeetPerGallons = 350.0;
    
    // Implement a do-while loop to ensure input is valid
    // Prompt user to input wall's height
   do {
        System.out.println("Enter wall height (feet): ");
        wallHeight = scnr.nextDouble();
   } while (wallHeight <= 0);

    // Implement a do-while loop to ensure input is valid
    // Prompt user to input wall's width
   do {
       System.out.println("Enter wall width (feet): ");
       wallWidth = scnr.nextDouble();
   } while (wallWidth <= 0);

    // Calculate and output wall area
    wallArea = wallHeight * wallWidth;
    System.out.println("Wall area: "   wallArea   " square feet");

    // Calculate and output the amount of paint (in gallons) needed to paint the wall
    gallonsPaintNeeded = wallArea/squareFeetPerGallons;
    System.out.println("Paint needed: "   gallonsPaintNeeded   " gallons");

}
 

}

Ответ №1:

Я бы использовал цикл while, чтобы пользователь вводил что-то, пока я не получу желаемый результат. Чтобы определить, правильно ли пользователь ввел что-то в этом случае, поставьте «попробовать/поймать scnr.nextDouble() «. Исключение, которое вы ищете, таково InputMismatchException . Это пример, который я привел:

 Scanner scanner = new Scanner(System.in);
double value;
while(true) {
    System.out.print("Enter a double: ");
    try {
        value = scanner.nextDouble();
        break;
    }
    catch (InputMismatchException e) {
        System.out.println("That is not a valid input. Please try again.");
        scanner = new Scanner(System.in);
    }
}
System.out.println("The double entered was "   value);
 

Комментарии:

1. Большое спасибо. Это очень помогает.

Ответ №2:

Вы можете использовать блок try/catch и написать что-то вроде System.err.println("wrong input"); .

Java.util.Исключение InputMismatchException должно быть выброшено (и поймано!)