Оператор модуля в Java

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

Введение

Оператор модуля является математическим оператором, который используется для нахождения остатка от деления двух чисел. Этот оператор обозначается символом %. В Java оператор модуля возвращает остаток от деления первого числа на второе число. В этом практическом занятии вы познакомитесь с некоторыми примерами использования этого оператора.

Пример использования оператора модуля

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

  1. Создайте новый файл с именем ModuloOperatorDemo.java с помощью команды touch.
  2. Откройте файл в текстовом редакторе, таком как nano.
  3. Добавьте в файл следующий код:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        System.out.println("10 % 3 = " + 10 % 3);
        System.out.println("3 % 10 = " + 3 % 10);
        System.out.println("10.0 % 3.0 = " + 10.0 % 3.0);
        System.out.println("10.0 % 3 = " + 10.0 % 3);
        System.out.println("-10 % 3 = " + -10 % 3);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
10 % 3 = 1
3 % 10 = 3
10.0 % 3.0 = 1.0
10.0 % 3 = 1.0
-10 % 3 = -1

Необходимость оператора модуля

В этом шаге мы обсудим, почему нужен оператор модуля при использовании оператора деления.

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        int dividend = 10;
        int divisor = 3;
        int remainder = dividend - (divisor * (dividend/divisor));
        System.out.print("The remainder is: " + remainder);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
The remainder is: 1

Когда делимое или делитель не является целым числом

В этом шаге мы увидим, как оператор модуля может обрабатывать десятичные числа.

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        double dividend = 10;
        int divisor = 3;
        double remainder = dividend - (divisor * (dividend/divisor));
        System.out.print("The remainder is: " + remainder);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
The remainder is: 0.0
  1. Измените код в файле следующим образом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        double dividend = 10;
        int divisor = 3;
        double remainder = dividend % divisor;
        System.out.print("The remainder is: " + remainder);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Перекомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Теперь код должен вывести следующее:
The remainder is: 1.0

ArithmeticException при использовании оператора модуля

В этом шаге мы увидим, как оператор модуля выбрасывает исключение, если делитель равен нулю.

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        System.out.print("The remainder is: " + 10 % 0);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен выбросить ArithmeticException следующим образом:
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at ModuloOperatorDemo.main(ModuloOperatorDemo.java:3)

Найти четные числа

В этом шаге мы увидим, как оператор модуля можно использовать для проверки, является ли число четным или нечетным.

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        int[] arr = {7, 5, 2, 4, 6, 19, 18, 25, 22};
        for(int i=0; i<arr.length; i++)
        {
            int num = arr[i];
            if((num % 2) == 0)
                System.out.println(num + " четное.");
            else
                System.out.println(num + " нечетное.");
        }
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
7 нечетное.
5 нечетное.
2 четное.
4 четное.
6 четное.
19 нечетное.
18 четное.
25 нечетное.
22 четное.

Преобразовать секунды в минуты и секунды

В этом шаге мы увидим, как оператор модуля можно использовать для преобразования секунд в минуты и секунды.

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        int seconds = 401;
        int minutes = seconds / 60;
        int remainingSeconds = seconds % 60;
        System.out.print(seconds + " секунд равно " + minutes + " минутам " + remainingSeconds + " секундам");
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
401 seconds is equal to 6 minutes 41 seconds

Извлечение отдельных цифр целого числа

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

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        int num = 7912064;
        while(num > 0)
        {
            int lastDigit = num % 10;
            num = num / 10;
            System.out.print(lastDigit + " ");
        }
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
4 6 0 2 1 9 7

Повторять что-то каждую n-ю итерацию

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

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        for(int i = 1; i <= 30; i++)
        {
            if(i % 5 == 0)
                System.out.println("Сделать что-то");
        }
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
Сделать что-то
Сделать что-то
Сделать что-то
Сделать что-то
Сделать что-то
Сделать что-то

Ограничить число определенным диапазоном

В этом шаге мы увидим, как оператор модуля можно использовать для ограничения числа в определенном диапазоне.

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        String[] dayNames = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
        int dayOfTheMonth1 = 21;
        String dayName1 = dayNames[(dayOfTheMonth1 - 1) % 7];
        int dayOfTheMonth2 = 12;
        String dayName2 = dayNames[(dayOfTheMonth2 - 1) % 7];

        System.out.println(dayOfTheMonth1 + " попадает на " + dayName1);
        System.out.println(dayOfTheMonth2 + " попадает на " + dayName2);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
21 occurs on Sunday
12 occurs on Friday

Делать число полностью делимым на другое число

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

  1. Откройте файл ModuloOperatorDemo.java в текстовом редакторе.
  2. Удалите существующий код и замените его следующим кодом:
public class ModuloOperatorDemo
{
    public static void main(String[] args)
    {
        int X = 291;
        int Y = 17;

        int remainder = X % Y;
        X = X - remainder;
        System.out.println("Минимальное число для вычитания: " + remainder);
        System.out.println("Число после вычитания: " + X);
    }
}
  1. Сохраните файл и выйдите из текстового редактора.
  2. Скомпилируйте код с помощью команды javac ModuloOperatorDemo.java.
  3. Запустите код с помощью команды java ModuloOperatorDemo.
  4. Код должен вывести следующее:
The minimum number to subtract is: 2
The number after subtraction is: 289

Резюме

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