#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 должно быть выброшено (и поймано!)