modModulo bölmə operatoru simvolla işarələnən operatordur %. Modul bölmə operatoru - 1Bu operator birinci operand ikinciyə bölündükdə qalığı qaytarır. modJava-dakı " " operatoru %yalnız tam ədədlərlə (məsələn: byte/int/short/long) deyil, həm də üzən nöqtəli (məsələn: float/double) ədədlər\növləri ilə işləyir. Aşağıdakı proqram bu ifadənin necə işlədiyini göstərir:
package com.l2cccp.work;

public class Mod
{
	public static void main(String args[])
	{
		int i = 17; // Integers
		double d = 17.3; // floating point

		System.out.println("i mod 10 = " + i % 10);
		System.out.println("d mod 10 = " + d % 10);
	}
}
Bu proqramı işlətməklə aşağıdakı nəticəni əldə edəcəksiniz:
i mod 10 = 7
d mod 10 = 7.300000000000001
Bu operatorun necə işlədiyini, lakin ondan necə istifadə edəcəyini anladıq. Kəmiyyətdən asılı olaraq sözləri düzəltmək üçün seçim kimi. Java oyun emulyatorunun tərtibatçısı kimi işlədiyim üçün mesajlarda çoxlu sözlərin flektiv olması mənim üçün çox vacibdir. Məsələn:
  1. Artıq 1 gündür oynayırsınız .
  2. Artıq 2 gündür oynayırsınız .
  3. Siz 5 gündür oynayırsınız .
Tənqid proqramı yazaq:
package com.l2cccp.work;

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

		System.out.println("You're already playing" + day[0] + " " + declension(day[0]));
		System.out.println("You're already playing" + day[1] + " " + declension(day[1]));
		System.out.println("You're already playing" + day[2] + " " + declension(day[2]));
	}

	public static String declension(int count)
	{
		String one = "day";
		String two = "of the day";
		String five = "days";

		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;
		}
	}
}
Bu proqramı işlətməklə aşağıdakı nəticəni əldə edəcəksiniz:
Вы играете уже 1 день
Вы играете уже 2 дня
Вы играете уже 5 дней
Hər şey ehtiyacımıza uyğun işləyir, amma bir nəticədə bir neçə sapma əldə etmək lazımdırsa? Məsələn:
  1. 1 gün 1 saatdır oynayırsınız .
  2. 2 gün 4 saatdır oynayırsınız .
  3. Siz 5 gün 9 saat oynayırsınız .
Ehtiyacımız olan hər söz üçün əlavə azalma üsulu yaza bilmərik. Belə bir meyl proqramı yazaq:
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("You're already playing" + day[0] + " " + declension(day[0], "Days") + " And " + hour[0] + " " + declension(hour[0], "Hour"));
		System.out.println("You're already playing" + day[1] + " " + declension(day[1], "Days") + " And " + hour[1] + " " + declension(hour[1], "Hour"));
		System.out.println("You're already playing" + day[2] + " " + declension(day[2], "Days") + " And " + 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 = "day";
			two = "of the day";
			five = "days";
		}
		else if(type.equals("Hour"))
		{
			one = "hour";
			two = "hours";
			five = "hours";
		}

		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;
		}
	}
}
Bu proqramı işlətməklə aşağıdakı nəticəni əldə edəcəksiniz:
Вы играете уже 1 день и 1 час
Вы играете уже 2 дня и 4 часа
Вы играете уже 5 дней и 9 часов
Metodumuz ictimai " public" kimi təsvir olunduğuna görə, ona istənilən paketdən asanlıqla zəng edə bilərsiniz:
Mod.declension(count, type);
Hamısı budur, ümid edirəm kiməsə faydalı olacaq. Java dilini mənimsəməkdə uğurlar.