JavaRush /Java Blog /Random-IT /Operatore di divisione del modulo
L2CCCP
Livello 9

Operatore di divisione del modulo

Pubblicato nel gruppo Random-IT
L'operatore di divisione del modulo è l'operatore mod, indicato dal simbolo %. Operatore di divisione modulo - 1Questo operatore restituisce il resto quando il primo operando viene diviso per il secondo. L' operatore mod" " %in Java funziona non solo con numeri interi (come: ), ma anche con numeri in byte/int/short/longvirgola mobile (come: ). float/doubleIl programma seguente illustra come funziona questa affermazione:
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);
	}
}
Eseguendo questo programma otterrai il seguente risultato:
i mod 10 = 7
d mod 10 = 7.300000000000001
Abbiamo capito come funziona questo operatore, ma come usarlo. Come opzione per flettere le parole in base alla quantità. Dato che lavoro come sviluppatore di un emulatore di giochi Java, per me è molto importante che molte parole nei messaggi siano flesse. Per esempio:
  1. Stai giocando già da 1 giorno .
  2. Giochi già da 2 giorni .
  3. Giochi già da 5 giorni .
Scriviamo un programma di declinazione:
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;
		}
	}
}
Eseguendo questo programma otterrai il seguente risultato:
Вы играете уже 1 день
Вы играете уже 2 дня
Вы играете уже 5 дней
Tutto funziona come ci occorre, ma cosa succede se abbiamo bisogno di ottenere più declinazioni in un unico risultato? Per esempio:
  1. Hai giocato per 1 giorno e 1 ora .
  2. Stai giocando da 2 giorni e 4 ore .
  3. Hai giocato per 5 giorni e 9 ore .
Non possiamo scrivere un metodo di declinazione aggiuntivo per ogni parola di cui abbiamo bisogno. Scriviamo un programma di declinazione come questo:
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;
		}
	}
}
Eseguendo questo programma otterrai il seguente risultato:
Вы играете уже 1 день и 1 час
Вы играете уже 2 дня и 4 часа
Вы играете уже 5 дней и 9 часов
Poiché il nostro metodo è descritto come un " public" pubblico, puoi chiamarlo facilmente da qualsiasi pacchetto:
Mod.declension(count, type);
Questo è tutto, spero che possa essere utile a qualcuno. Buona fortuna per padroneggiare il linguaggio Java.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION