JavaRush /Blog Java /Random-ES /Operador de división de módulo
L2CCCP
Nivel 9

Operador de división de módulo

Publicado en el grupo Random-ES
El operador de división de módulo es el operador mod, indicado por el símbolo %. Operador de división de módulo - 1Este operador devuelve el resto cuando el primer operando se divide por el segundo. El operador mod" " %en Java no solo funciona con números enteros (como:) byte/int/short/long, sino también con números de punto flotante (como:) float/double. El siguiente programa ilustra cómo funciona esta declaración:
package com.l2cccp.work;

public class Mod
{
	public static void main(String args[])
	{
		int i = 17; // Enteros
		double d = 17.3; // punto flotante

		System.out.println("i mod 10 = " + i % 10);
		System.out.println("d mod 10 = " + d % 10);
	}
}
Al ejecutar este programa obtendrá el siguiente resultado:
i mod 10 = 7
d mod 10 = 7.300000000000001
Descubrimos cómo funciona este operador y cómo usarlo. Como opción para declinar palabras dependiendo de la cantidad. Como trabajo como desarrollador de un emulador de juegos Java, para mí es muy importante que muchas palabras de los mensajes estén flexionadas. P.ej:
  1. Ya llevas 1 día jugando .
  2. Ya llevas 2 días jugando .
  3. Ya llevas 5 días jugando .
Escribamos un programa de declinación:
package com.l2cccp.work;

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

		System.out.println("Ya estás jugando" + day[0] + " " + declension(day[0]));
		System.out.println("Ya estás jugando" + day[1] + " " + declension(day[1]));
		System.out.println("Ya estás jugando" + day[2] + " " + declension(day[2]));
	}

	public static String declension(int count)
	{
		String one = "día";
		String two = "del día";
		String five = "días";

		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;
		}
	}
}
Al ejecutar este programa obtendrá el siguiente resultado:
Вы играете уже 1 день
Вы играете уже 2 дня
Вы играете уже 5 дней
Todo funciona como lo necesitamos, pero ¿qué pasa si necesitamos obtener varias declinaciones en un solo resultado? P.ej:
  1. Llevas 1 día y 1 hora jugando .
  2. Llevas 2 días y 4 horas jugando .
  3. Llevas 5 días 9 horas jugando .
No podemos escribir un método de declinación adicional para cada palabra que necesitamos. Escribamos un programa de declinación como este:
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("Ya estás jugando" + day[0] + " " + declension(day[0], "Days") + " Y " + hour[0] + " " + declension(hour[0], "Hour"));
		System.out.println("Ya estás jugando" + day[1] + " " + declension(day[1], "Days") + " Y " + hour[1] + " " + declension(hour[1], "Hour"));
		System.out.println("Ya estás jugando" + day[2] + " " + declension(day[2], "Days") + " Y " + 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 = "día";
			two = "del día";
			five = "días";
		}
		else if(type.equals("Hour"))
		{
			one = "hora";
			two = "horas";
			five = "horas";
		}

		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;
		}
	}
}
Al ejecutar este programa obtendrá el siguiente resultado:
Вы играете уже 1 день и 1 час
Вы играете уже 2 дня и 4 часа
Вы играете уже 5 дней и 9 часов
Dado que nuestro método se describe como " public" público, puedes llamarlo fácilmente desde cualquier paquete:
Mod.declension(count, type);
Eso es todo, espero que a alguien le sirva. Buena suerte para dominar el lenguaje Java.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION