Тестирование ввода отрицательных чисел и нецелых значений
На этом этапе мы протестируем нашу программу SquareRootChecker.java
с использованием отрицательных чисел и рассмотрим, что произойдет, если пользователь введет что-то, что не является целым числом.
В написанном нами коде мы добавили проверку на отрицательные числа:
if (number < 0) {
System.out.println("Cannot calculate the square root of a negative number.");
}
Этот if
-оператор обрабатывает случай, когда пользователь вводит отрицательное целое число. Протестируем эту часть кода.
-
Убедитесь, что вы находитесь в директории ~/project
в терминале.
-
Запустите скомпилированную программу:
java SquareRootChecker
-
Когда появится запрос на ввод, введите отрицательное число, например, -4
, и нажмите Enter.
Enter an integer: -4
Cannot calculate the square root of a negative number.
Как и ожидалось, программа правильно определяет, что не может вычислить квадратный корень из отрицательного числа, и выводит соответствующее сообщение.
Теперь рассмотрим, что произойдет, если пользователь введет данные, которые не являются целым числом, например, текст или десятичное число. Наша программа использует метод scanner.nextInt()
для чтения ввода. Этот метод предназначен только для чтения целых значений. Если пользователь введет что-то, что не может быть преобразовано в целое число, возникнет исключение InputMismatchException
, и программа аварийно завершит работу.
Удобное обработка таких ошибок является важной частью написания надежных программ. В этом вводном курсе лабораторных работ мы не будем реализовывать полную обработку ошибок для нецелых входных данных, но важно знать, что такое может произойти. В будущих лабораторных работах вы научитесь использовать такие техники, как блоки try-catch
для обработки исключений и сделаете свои программы более устойчивыми к неожиданному вводу пользователя.
Пока просто посмотрим, что произойдет, когда вы введете нецелые данные.
-
Запустите скомпилированную программу еще раз:
java SquareRootChecker
-
Когда появится запрос на ввод, введите какой-то текст, например, hello
, и нажмите Enter.
Enter an integer: hello
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at SquareRootChecker.main(SquareRootChecker.java:9)
Вы увидите сообщение об ошибке, указывающее на InputMismatchException
. Это происходит потому, что метод scanner.nextInt()
ожидал целое число, но получил "hello".
На этом этапе подчеркивается важность учета различных типов входных данных пользователя и того, как ваша программа будет их обрабатывать. Хотя наша текущая программа проста, понимание этих потенциальных проблем является важным для разработки более сложных приложений.