Обработка исключений при вводе чисел
При чтении числового ввода с использованием класса Scanner важно обрабатывать возможные исключения, которые могут возникнуть. Одним из распространенных исключений является InputMismatchException, которое выбрасывается, когда пользователь вводит нечисловое значение.
Для обработки этих исключений вы можете использовать блок try-catch для перехвата исключения и выполнения соответствующей обработки ошибок. Вот пример:
import java.util.InputMismatchException;
import java.util.Scanner;
public class NumericInputException {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter a long integer: ");
long longNumber = scanner.nextLong();
System.out.println("You entered: " + longNumber);
} catch (InputMismatchException e) {
System.out.println("Error: Invalid input. Please enter a valid long integer.");
} finally {
scanner.close();
}
}
}
В этом примере мы обернули вызов scanner.nextLong() в блок try. Если пользователь вводит нечисловое значение, перехватывается InputMismatchException, и мы выводим сообщение об ошибке. В конце мы закрываем объект Scanner в блоке finally, чтобы убедиться, что системные ресурсы корректно освобождаются.
Обрабатывая исключения, вы можете сделать свои Java-приложения более надежными и обеспечить лучший опыт пользователя, элегантно обрабатывая неожиданный ввод.
Кроме того, вы можете использовать цикл для повторного запроса ввода у пользователя до тех пор, пока не будет введено действительное длинное целое число. Вот пример:
import java.util.InputMismatchException;
import java.util.Scanner;
public class NumericInputException {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long longNumber;
boolean validInput = false;
while (!validInput) {
try {
System.out.print("Enter a long integer: ");
longNumber = scanner.nextLong();
validInput = true;
System.out.println("You entered: " + longNumber);
} catch (InputMismatchException e) {
System.out.println("Error: Invalid input. Please enter a valid long integer.");
scanner.nextLine(); // Clear the input buffer
}
}
scanner.close();
}
}
В этом примере мы используем цикл while для повторного запроса ввода у пользователя до тех пор, пока не будет введено действительное длинное целое число. Вызов scanner.nextLine() используется для очистки буфера ввода после перехвата InputMismatchException, чтобы пользователь мог ввести новое значение.
Обрабатывая исключения и обеспечивая надежный процесс валидации ввода, вы можете гарантировать, что ваши Java-приложения могут элегантно обрабатывать различные типы пользовательского ввода и обеспечить лучший общий опыт пользователя.