Введение
В этом практическом занятии (лабораторной работе) вы научитесь определять, является ли число четным или нечетным на Java. Мы рассмотрим использование оператора остатка от деления (%) для проверки остатка при делении числа на 2, что является фундаментальным принципом для определения четных чисел.
Вы реализуете простую Java-программу для выполнения такой проверки, протестируете ее с положительными и отрицательными целочисленными входными данными и рассмотрите, как обработать нецелочисленные входные данные, чтобы сделать ваше решение более надежным.
Использование оператора остатка от деления для проверки на четность
На этом этапе мы научимся определять, является ли число четным или нечетным на Java с использованием оператора остатка от деления. Оператор остатка от деления (%) возвращает остаток от деления. Например, 10 % 3 равно 1, потому что при делении 10 на 3 получается 3 с остатком 1.
Четным числом является любое целое число, которое можно разделить на 2 без остатка. Это означает, что если вы разделите четное число на 2, остаток всегда будет равен 0. Мы можем использовать оператор остатка от деления для проверки этого условия.
Давайте создадим простую Java-программу для проверки, является ли число четным.
Откройте файл
EvenCheck.javaв редакторе WebIDE. Если файл не существует, создайте его в директории~/project. Вы можете сделать это, щелкнув правой кнопкой мыши в проводнике файлов слева, выбрав "New File" и введяEvenCheck.java.Добавьте следующий код в файл
EvenCheck.java:public class EvenCheck { public static void main(String[] args) { int number = 10; // Мы проверим, является ли это число четным // Используем оператор остатка от деления для проверки остатка при делении на 2 if (number % 2 == 0) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }Давайте рассмотрим новые части кода:
int number = 10;: Это объявляет целочисленную переменную с именемnumberи присваивает ей значение 10. Мы можем изменить это значение, чтобы проверить разные числа.if (number % 2 == 0): Этоif-оператор. Он проверяет, является ли условие в скобках истинным. Условиеnumber % 2 == 0проверяет, равен ли остаток от деленияnumberна 2 нулю.System.out.println(number + " is an even number.");: Эта строка выполняется, если условие вif-операторе истинно (число четное).else: Это ключевое слово представляет блок кода, который будет выполнен, если условие вif-операторе ложно (число нечетное).System.out.println(number + " is an odd number.");: Эта строка выполняется, если число нечетное.
Сохраните файл
EvenCheck.java(Ctrl+S или Cmd+S).Теперь скомпилируйте программу. Откройте терминал внизу WebIDE и убедитесь, что вы находитесь в директории
~/project. Затем выполните следующую команду:javac EvenCheck.javaЕсли нет ошибок, будет создан файл
EvenCheck.class.Наконец, запустите скомпилированную программу:
java EvenCheckВы должны увидеть вывод, показывающий, является ли число 10 четным или нечетным.
10 is an even number.
Теперь попробуйте изменить значение переменной number в файле EvenCheck.java на другое целое число (например, 7, -5, 0) и повторите шаги 3, 4 и 5, чтобы увидеть, как изменится вывод.
Тестирование с положительными и отрицательными числами
На предыдущем этапе мы успешно проверили, является ли положительное целое число четным или нечетным. Теперь давайте рассмотрим, как работает оператор остатка от деления с отрицательными числами и нулем. Концепция четности и нечетности применяется ко всем целым числам, включая отрицательные и ноль.
Целое число является четным, если оно делится на 2 без остатка, то есть остаток от деления равен 0. Это определение справедливо и для отрицательных чисел. Например, -4 является четным числом, потому что -4 деленное на 2 равно -2 с остатком 0. -3 является нечетным числом, потому что -3 деленное на 2 равно -1 с остатком -1 (или 1, в зависимости от определения оператора остатка от деления для отрицательных чисел, но главное, что это не 0). Ноль также считается четным числом, потому что 0 деленное на 2 равно 0 с остатком 0.
Давайте модифицируем нашу программу EvenCheck.java для тестирования с разными положительными и отрицательными числами, а также с нулем.
Откройте файл
EvenCheck.javaв редакторе WebIDE.Измените метод
mainдля тестирования нескольких разных чисел. Вы можете несколько раз изменить значение переменнойnumberили добавить больше блоковif-elseдля последовательной проверки разных чисел. Для простоты давайте будем изменять значениеnumberи перезапускать программу для каждого тестового случая.
Сначала давайте протестируем с положительным нечетным числом. Измените строку int number = 10; на:
int number = 7; // Test with a positive odd number
Сохраните файл.
Скомпилируйте модифицированную программу в терминале:
javac EvenCheck.java
- Запустите программу:
java EvenCheck
Вы должны увидеть следующий вывод:
7 is an odd number.
- Теперь давайте протестируем с отрицательным четным числом. Измените строку
int number = 7;на:
int number = -4; // Test with a negative even number
Сохраните файл.
Скомпилируйте программу:
javac EvenCheck.java
- Запустите программу:
java EvenCheck
Вы должны увидеть следующий вывод:
-4 is an even number.
- Далее, протестируйте с отрицательным нечетным числом. Измените строку
int number = -4;на:
int number = -3; // Test with a negative odd number
Сохраните файл.
Скомпилируйте программу:
javac EvenCheck.java
- Запустите программу:
java EvenCheck
Вы должны увидеть следующий вывод:
-3 is an odd number.
- Наконец, протестируйте с нулем. Измените строку
int number = -3;на:
int number = 0; // Test with zero
Сохраните файл.
Скомпилируйте программу:
javac EvenCheck.java
- Запустите программу:
java EvenCheck
Вы должны увидеть следующий вывод:
0 is an even number.
Как вы можете видеть, оператор остатка от деления правильно определяет четные и нечетные числа для положительных, отрицательных значений и нуля. Логика number % 2 == 0 является надежным способом проверки четности любого целого числа.
Обработка нецелых входных данных
На предыдущих этапах мы успешно использовали оператор остатка от деления для проверки, является ли целое число четным или нечетным. Однако, что произойдет, если пользователь попытается ввести что-то, что не является целым числом, например, десятичное число или текст? Наша текущая программа разработана для работы с целыми числами (int), и ввод нецелых данных вызовет ошибку.
На этом этапе мы модифицируем нашу программу, чтобы она принимала входные данные от пользователя и обрабатывала случаи, когда ввод не является допустимым целым числом. Мы будем использовать класс Scanner, который мы кратко рассмотрели в разделе "Your First Java Lab", для чтения входных данных от пользователя.
Откройте файл
EvenCheck.javaв редакторе WebIDE.Замените весь контент файла следующим кодом:
import java.util.Scanner;
import java.util.InputMismatchException;
public class EvenCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
try {
int number = scanner.nextInt(); // Read integer input from the user
// Use the modulo operator to check for a remainder when divided by 2
if (number % 2 == 0) {
System.out.println(number + " is an even number.");
} else {
System.out.println(number + " is an odd number.");
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter an integer.");
} finally {
scanner.close(); // Close the scanner
}
}
}
Давайте рассмотрим изменения:
import java.util.Scanner;: Импортирует классScannerдля чтения входных данных.import java.util.InputMismatchException;: Импортирует класс исключения, которое выбрасывается, когда входные данные не соответствуют ожидаемому типу.Scanner scanner = new Scanner(System.in);: Создает объектScannerдля чтения входных данных с консоли.System.out.print("Enter an integer: ");: Запрашивает у пользователя ввести число.try { ... } catch (InputMismatchException e) { ... }: Это блокtry-catch, который используется для обработки ошибок. Код внутри блокаtryвыполняется. Если возникает исключениеInputMismatchException(то есть входные данные не являются целым числом), выполняется код внутри блокаcatch.int number = scanner.nextInt();: Эта строка пытается прочитать целое число из входных данных пользователя. Если пользователь вводит что-то, что не может быть интерпретировано как целое число, выбрасывается исключениеInputMismatchException.System.out.println("Invalid input. Please enter an integer.");: Это сообщение выводится, если было поймано исключениеInputMismatchException.finally { scanner.close(); }: Код внутри блокаfinallyвсегда выполняется, независимо от того, произошло исключение или нет. Здесь он используется для закрытия ресурсаScanner.
Сохраните файл.
Скомпилируйте модифицированную программу в терминале:
javac EvenCheck.java
- Запустите программу:
java EvenCheck
- Когда появится запрос, введите целое число (например,
15) и нажмите Enter. Программа должна правильно определить, является ли оно четным или нечетным.
Enter an integer: 15
15 is an odd number.
- Запустите программу еще раз:
java EvenCheck
- На этот раз, когда появится запрос, введите нецелое значение (например,
helloили3.14) и нажмите Enter. Теперь программа должна корректно обработать недопустимый ввод.
Enter an integer: hello
Invalid input. Please enter an integer.
Добавив блок try-catch, наша программа стала более надежной и может обрабатывать случаи, когда пользователь вводит данные в неподходящем формате. Это важный аспект написания удобных для пользователя программ.
Резюме
В этом практическом занятии мы научились проверять, является ли число четным на Java с использованием оператора остатка от деления (%). Мы выяснили, что четное число имеет остаток 0 при делении на 2. Мы реализовали простую программу на Java с использованием оператора if-else для выполнения этой проверки и вывода, является ли данное целое число четным или нечетным.
Мы также провели тестирование проверки на четность с использованием как положительных, так и отрицательных целых входных данных, чтобы убедиться, что оператор остатка от деления ведет себя ожидаемым образом для разных знаков чисел. Наконец, мы рассмотрели, как обрабатывать нецелые входные данные, понимая, что оператор остатка от деления обычно используется с целочисленными типами, и обсудили возможные подходы для валидации типов входных данных или обработки исключений в более надежном приложении.



