Оператор поділу по модулю-оператор
mod
позначається символом %
. Цей оператор повертає залишок від поділу першого операнда на другий. Оператор Java працює не тільки з цілими (такі як: ), mod
але і з плаваючою точкою (такі як: ) числами \ типами. Нижче наведена програма ілюструє роботу цього оператора: %
byte/int/short/long
float/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 день .
- Ви граєте вже 2 дні .
- Ви граєте вже 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 годину .
- Ви граєте вже 2 дні та 4 години .
- Ви граєте вже 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 мови.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ