JavaRush /Java блог /Random UA /Оператор поділу за модулем
L2CCCP
9 рівень

Оператор поділу за модулем

Стаття з групи Random UA
Оператор поділу по модулю-оператор modпозначається символом %. Оператор поділу по модулю - 1Цей оператор повертає залишок від поділу першого операнда на другий. Оператор Java працює не тільки з цілими (такі як: ), modале і з плаваючою точкою (такі як: ) числами \ типами. Нижче наведена програма ілюструє роботу цього оператора: %byte/int/short/longfloat/double
package com.l2cccp.work;

public class Mod
{
	public static void main(String args[])
	{
		int i = 17; // Цілі
		double d = 17.3; // З плаваючою точкою

		System.out.println("i mod 10 = " + i % 10);
		System.out.println("d mod 10 = " + d % 10);
	}
}
Виконавши цю програму, ви отримаєте наступний результат:
i mod 10 = 7
d mod 10 = 7.300000000000001
З роботою даного оператора розібралися, але як його використовувати. Як варіант для відмінювання слів в залежності від кількості. Так як я працюю розробником емулятора гри на java для мене дуже важливо, щоб багато слів у повідомленнях схилялися. Наприклад:
  1. Ви граєте вже 1 день .
  2. Ви граєте вже 2 дні .
  3. Ви граєте вже 5 днів .
Напишемо програму відмінювання:
package com.l2cccp.work;

public class Mod
{
	public static void main(String args[])
	{
		int[] day= new int[] { 1, 2, 5 };

		System.out.println("Ви граєте вже" + day[0] + " " + declension(day[0]));
		System.out.println("Ви граєте вже" + day[1] + " " + declension(day[1]));
		System.out.println("Ви граєте вже" + day[2] + " " + declension(day[2]));
	}

	public static String declension(int count)
	{
		String one = "день";
		String two = "дня";
		String five = "днів";

		if(count > 100)
			count %= 100;

		if(count > 20)
			count %= 10;

		switch(count)
		{
			case 1:
				return one;
			case 2:
			case 3:
			case 4:
				return two;
			default:
				return five;
		}
	}
}
Виконавши цю програму, ви отримаєте наступний результат:
Вы играете уже 1 день
Вы играете уже 2 дня
Вы играете уже 5 дней
Все працює так як нам потрібно, але що якщо нам потрібно отримати кілька відмін в одному результаті? Наприклад:
  1. Ви граєте вже 1 день та 1 годину .
  2. Ви граєте вже 2 дні та 4 години .
  3. Ви граєте вже 5 днів 9 годин .
Не писати нам додатковий метод відмінювання для кожного слова, яке нам знадобиться. Напишемо програму відмінювання на кшталт:
package com.l2cccp.work;

public class Mod
{
	public static void main(String args[])
	{
		int[] day = new int[] { 1, 2, 5 };
		int[] hour = new int[] { 1, 4, 9 };

		System.out.println("Ви граєте вже" + day[0] + " " + declension(day[0], "Days") + "і" + hour[0] + " " + declension(hour[0], "Hour"));
		System.out.println("Ви граєте вже" + day[1] + " " + declension(day[1], "Days") + "і" + hour[1] + " " + declension(hour[1], "Hour"));
		System.out.println("Ви граєте вже" + day[2] + " " + declension(day[2], "Days") + "і" + hour[2] + " " + declension(hour[2], "Hour"));
	}

	public static String declension(int count, String type)
	{
		String one = "";
		String two = "";
		String five = "";

		if(type.equals("Days"))
		{
			one = "день";
			two = "дня";
			five = "днів";
		}
		else if(type.equals("Hour"))
		{
			one = "година";
			two = "години";
			five = "годинник";
		}

		if(count > 100)
			count %= 100;

		if(count > 20)
			count %= 10;

		switch(count)
		{
			case 1:
				return one;
			case 2:
			case 3:
			case 4:
				return two;
			default:
				return five;
		}
	}
}
Виконавши цю програму, ви отримаєте наступний результат:
Вы играете уже 1 день и 1 час
Вы играете уже 2 дня и 4 часа
Вы играете уже 5 дней и 9 часов
Так як наш метод описаний як паблік " public" то викликати його можна легко з будь-якого пакета:
Mod.declension(count, type);
Власне ось і все, сподіваюся комусь це буде корисно. Удачі в освоєнні Java мови.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ