Как проверить, является ли число четным на Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь определять, является ли число четным или нечетным на Java. Мы рассмотрим использование оператора остатка от деления (%) для проверки остатка при делении числа на 2, что является фундаментальным принципом для определения четных чисел.

Вы реализуете простую Java-программу для выполнения такой проверки, протестируете ее с положительными и отрицательными целочисленными входными данными и рассмотрите, как обработать нецелочисленные входные данные, чтобы сделать ваше решение более надежным.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") subgraph Lab Skills java/data_types -.-> lab-559962{{"Как проверить, является ли число четным на Java"}} java/operators -.-> lab-559962{{"Как проверить, является ли число четным на Java"}} java/if_else -.-> lab-559962{{"Как проверить, является ли число четным на Java"}} java/user_input -.-> lab-559962{{"Как проверить, является ли число четным на Java"}} java/exceptions -.-> lab-559962{{"Как проверить, является ли число четным на Java"}} end

Использование оператора остатка от деления для проверки на четность

На этом этапе мы научимся определять, является ли число четным или нечетным на Java с использованием оператора остатка от деления. Оператор остатка от деления (%) возвращает остаток от деления. Например, 10 % 3 равно 1, потому что при делении 10 на 3 получается 3 с остатком 1.

Четным числом является любое целое число, которое можно разделить на 2 без остатка. Это означает, что если вы разделите четное число на 2, остаток всегда будет равен 0. Мы можем использовать оператор остатка от деления для проверки этого условия.

Давайте создадим простую Java-программу для проверки, является ли число четным.

  1. Откройте файл EvenCheck.java в редакторе WebIDE. Если файл не существует, создайте его в директории ~/project. Вы можете сделать это, щелкнув правой кнопкой мыши в проводнике файлов слева, выбрав "New File" и введя EvenCheck.java.

  2. Добавьте следующий код в файл 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.");: Эта строка выполняется, если число нечетное.
  3. Сохраните файл EvenCheck.java (Ctrl+S или Cmd+S).

  4. Теперь скомпилируйте программу. Откройте терминал внизу WebIDE и убедитесь, что вы находитесь в директории ~/project. Затем выполните следующую команду:

    javac EvenCheck.java

    Если нет ошибок, будет создан файл EvenCheck.class.

  5. Наконец, запустите скомпилированную программу:

    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 для тестирования с разными положительными и отрицательными числами, а также с нулем.

  1. Откройте файл EvenCheck.java в редакторе WebIDE.

  2. Измените метод main для тестирования нескольких разных чисел. Вы можете несколько раз изменить значение переменной number или добавить больше блоков if-else для последовательной проверки разных чисел. Для простоты давайте будем изменять значение number и перезапускать программу для каждого тестового случая.

Сначала давайте протестируем с положительным нечетным числом. Измените строку int number = 10; на:

int number = 7; // Test with a positive odd number
  1. Сохраните файл.

  2. Скомпилируйте модифицированную программу в терминале:

javac EvenCheck.java
  1. Запустите программу:
java EvenCheck

Вы должны увидеть следующий вывод:

7 is an odd number.
  1. Теперь давайте протестируем с отрицательным четным числом. Измените строку int number = 7; на:
int number = -4; // Test with a negative even number
  1. Сохраните файл.

  2. Скомпилируйте программу:

javac EvenCheck.java
  1. Запустите программу:
java EvenCheck

Вы должны увидеть следующий вывод:

-4 is an even number.
  1. Далее, протестируйте с отрицательным нечетным числом. Измените строку int number = -4; на:
int number = -3; // Test with a negative odd number
  1. Сохраните файл.

  2. Скомпилируйте программу:

javac EvenCheck.java
  1. Запустите программу:
java EvenCheck

Вы должны увидеть следующий вывод:

-3 is an odd number.
  1. Наконец, протестируйте с нулем. Измените строку int number = -3; на:
int number = 0; // Test with zero
  1. Сохраните файл.

  2. Скомпилируйте программу:

javac EvenCheck.java
  1. Запустите программу:
java EvenCheck

Вы должны увидеть следующий вывод:

0 is an even number.

Как вы можете видеть, оператор остатка от деления правильно определяет четные и нечетные числа для положительных, отрицательных значений и нуля. Логика number % 2 == 0 является надежным способом проверки четности любого целого числа.

Обработка нецелых входных данных

На предыдущих этапах мы успешно использовали оператор остатка от деления для проверки, является ли целое число четным или нечетным. Однако, что произойдет, если пользователь попытается ввести что-то, что не является целым числом, например, десятичное число или текст? Наша текущая программа разработана для работы с целыми числами (int), и ввод нецелых данных вызовет ошибку.

На этом этапе мы модифицируем нашу программу, чтобы она принимала входные данные от пользователя и обрабатывала случаи, когда ввод не является допустимым целым числом. Мы будем использовать класс Scanner, который мы кратко рассмотрели в разделе "Your First Java Lab", для чтения входных данных от пользователя.

  1. Откройте файл EvenCheck.java в редакторе WebIDE.

  2. Замените весь контент файла следующим кодом:

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.
  1. Сохраните файл.

  2. Скомпилируйте модифицированную программу в терминале:

javac EvenCheck.java
  1. Запустите программу:
java EvenCheck
  1. Когда появится запрос, введите целое число (например, 15) и нажмите Enter. Программа должна правильно определить, является ли оно четным или нечетным.
Enter an integer: 15
15 is an odd number.
  1. Запустите программу еще раз:
java EvenCheck
  1. На этот раз, когда появится запрос, введите нецелое значение (например, hello или 3.14) и нажмите Enter. Теперь программа должна корректно обработать недопустимый ввод.
Enter an integer: hello
Invalid input. Please enter an integer.

Добавив блок try-catch, наша программа стала более надежной и может обрабатывать случаи, когда пользователь вводит данные в неподходящем формате. Это важный аспект написания удобных для пользователя программ.

Резюме

В этом практическом занятии мы научились проверять, является ли число четным на Java с использованием оператора остатка от деления (%). Мы выяснили, что четное число имеет остаток 0 при делении на 2. Мы реализовали простую программу на Java с использованием оператора if-else для выполнения этой проверки и вывода, является ли данное целое число четным или нечетным.

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