Saltar al contenido

modulo – ¿Cuál es la sintaxis de mod en java?

octubre 16, 2021
apple touch icon@2

Como todos los demás ya dieron la respuesta, agregaré un poco de contexto adicional. % el operador de «módulo» está realizando el resto de la operación. La diferencia entre mod y rem es sutil, pero importante.

(-1 mod 2) normalmente daría 1. Más específicamente, dados dos números enteros, X e Y, la operación (X mod Y) tiende a devolver un valor en el rango [0, Y). Said differently, the modulus of X and Y is always greater than or equal to zero, and less than Y.

Performing the same operation with the «%» or rem operator maintains the sign of the X value. If X is negative you get a result in the range (-Y, 0]. Si X es positivo, obtiene un resultado en el rango[0Y)[0Y)

A menudo, esta sutil distinción no importa. Sin embargo, volviendo a la pregunta del código, hay varias formas de resolver la «uniformidad».

El primer enfoque es bueno para los principiantes, porque es especialmente detallado.

// Option 1: Clearest way for beginners
boolean isEven;
if ((a % 2) == 0)
{
  isEven = true
}
else
{
  isEven = false
}

El segundo enfoque aprovecha mejor el lenguaje y conduce a un código más sucinto. (No olvide que el operador == devuelve un booleano).

// Option 2: Clear, succinct, code
boolean isEven = ((a % 2) == 0);

El tercer enfoque está aquí para completar y utiliza el ternario operador. Aunque el operador ternario es a menudo muy útil, en este caso considero que el segundo enfoque es superior.

// Option 3: Ternary operator
boolean isEven = ((a % 2) == 0) ? true : false;

El cuarto y último enfoque es utilizar el conocimiento de la representación binaria de enteros. Si el bit menos significativo es 0, el número es par. Esto se puede comprobar utilizando el operador bit a bit (&). Si bien este enfoque es el más rápido (está haciendo un enmascaramiento de bits simple en lugar de una división), quizás sea un poco avanzado / complicado para un principiante.

// Option 4: Bitwise-and
boolean isEven = ((a & 1) == 0);

Aquí utilicé el operador and bit a bit, y lo representé en la forma sucinta que se muestra en la opción 2. Reescribirlo en la forma de la Opción 1 (y alternativamente en la Opción 3) se deja como ejercicio para el lector. 😉

Espero que ayude.

close