Introducción
En este laboratorio, aprenderás cómo determinar si un número es par o impar en Java. Exploraremos el uso del operador módulo (%) para verificar el residuo cuando un número se divide entre 2, que es el principio fundamental para identificar números pares.
Implementarás un sencillo programa en Java para realizar esta comprobación, lo probarás con entradas de enteros positivos y negativos, y considerarás cómo manejar entradas no enteras para hacer tu solución más robusta.
Utilizar el operador módulo para comprobar la paridad
En este paso, aprenderemos cómo determinar si un número es par o impar en Java utilizando el operador módulo. El operador módulo (%) te da el residuo de una división. Por ejemplo, 10 % 3 es 1 porque 10 dividido entre 3 es 3 con un residuo de 1.
Un número par es cualquier entero que se puede dividir entre 2 sin dejar residuo. Esto significa que si divides un número par entre 2, el residuo siempre es 0. Podemos usar el operador módulo para verificar esta condición.
Vamos a crear un sencillo programa en Java para verificar si un número es par.
Abre el archivo
EvenCheck.javaen el editor WebIDE. Si el archivo no existe, créalo en el directorio~/project. Puedes hacer esto haciendo clic derecho en el Explorador de Archivos de la izquierda, seleccionando "Nuevo Archivo" y escribiendoEvenCheck.java.Agrega el siguiente código al archivo
EvenCheck.java:public class EvenCheck { public static void main(String[] args) { int number = 10; // Verificaremos si este número es par // Usar el operador módulo para verificar el residuo al dividir entre 2 if (number % 2 == 0) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }Veamos las partes nuevas:
int number = 10;: Esto declara una variable entera llamadanumbery le asigna el valor 10. Podemos cambiar este valor para probar diferentes números.if (number % 2 == 0): Esta es una declaraciónif. Verifica si la condición dentro de los paréntesis es verdadera. La condiciónnumber % 2 == 0verifica si el residuo denumberdividido entre 2 es igual a 0.System.out.println(number + " is an even number.");: Esta línea se ejecuta si la condición en la declaraciónifes verdadera (el número es par).else: Esta palabra clave introduce el bloque de código que se ejecutará si la condición en la declaraciónifes falsa (el número es impar).System.out.println(number + " is an odd number.");: Esta línea se ejecuta si el número es impar.
Guarda el archivo
EvenCheck.java(Ctrl+S o Cmd+S).Ahora, compila el programa. Abre la Terminal en la parte inferior del WebIDE y asegúrate de estar en el directorio
~/project. Luego, ejecuta el siguiente comando:javac EvenCheck.javaSi no hay errores, se creará un archivo
EvenCheck.class.Finalmente, ejecuta el programa compilado:
java EvenCheckDeberías ver la salida que indica si el número 10 es par o impar.
10 is an even number.
Ahora, intenta cambiar el valor de la variable number en el archivo EvenCheck.java a un entero diferente (por ejemplo, 7, -5, 0) y repite los pasos 3, 4 y 5 para ver cómo cambia la salida.
Probar con números positivos y negativos
En el paso anterior, verificamos con éxito si un entero positivo es par o impar. Ahora, exploremos cómo funciona el operador módulo con números negativos y cero. El concepto de par e impar se aplica a todos los enteros, incluyendo los negativos y el cero.
Un entero es par si es divisible entre 2, lo que significa que el residuo es 0. Esta definición también es válida para los números negativos. Por ejemplo, -4 es par porque -4 dividido entre 2 es -2 con un residuo de 0. -3 es impar porque -3 dividido entre 2 es -1 con un residuo de -1 (o 1, dependiendo de la definición de módulo para números negativos, pero lo importante es que no es 0). El cero también se considera un número par porque 0 dividido entre 2 es 0 con un residuo de 0.
Modifiquemos nuestro programa EvenCheck.java para probar con diferentes números positivos y negativos, así como con cero.
Abre el archivo
EvenCheck.javaen el editor WebIDE.Modifica el método
mainpara probar varios números diferentes. Puedes cambiar el valor de la variablenumbervarias veces, o puedes agregar más bloquesif-elsepara verificar diferentes números secuencialmente. Para simplificar, cambiemos el valor denumbery volvamos a ejecutar el programa para cada caso de prueba.
Primero, probemos con un número impar positivo. Cambia la línea int number = 10; a:
int number = 7; // Test with a positive odd number
Guarda el archivo.
Compila el programa modificado en la Terminal:
javac EvenCheck.java
- Ejecuta el programa:
java EvenCheck
Deberías ver la salida:
7 is an odd number.
- Ahora, probemos con un número par negativo. Cambia la línea
int number = 7;a:
int number = -4; // Test with a negative even number
Guarda el archivo.
Compila el programa:
javac EvenCheck.java
- Ejecuta el programa:
java EvenCheck
Deberías ver la salida:
-4 is an even number.
- A continuación, prueba con un número impar negativo. Cambia la línea
int number = -4;a:
int number = -3; // Test with a negative odd number
Guarda el archivo.
Compila el programa:
javac EvenCheck.java
- Ejecuta el programa:
java EvenCheck
Deberías ver la salida:
-3 is an odd number.
- Finalmente, prueba con cero. Cambia la línea
int number = -3;a:
int number = 0; // Test with zero
Guarda el archivo.
Compila el programa:
javac EvenCheck.java
- Ejecuta el programa:
java EvenCheck
Deberías ver la salida:
0 is an even number.
Como puedes ver, el operador módulo identifica correctamente los números pares e impares para valores positivos, negativos y cero. La lógica number % 2 == 0 es una forma confiable de verificar si un número es par para cualquier entero.
Manejar entradas no enteras
En los pasos anteriores, hemos utilizado con éxito el operador módulo para verificar si los números enteros son pares o impares. Sin embargo, ¿qué sucede si el usuario intenta ingresar algo que no es un entero, como un número decimal o texto? Nuestro programa actual está diseñado para trabajar con enteros (int), y proporcionar una entrada no entera causará un error.
En este paso, modificaremos nuestro programa para tomar la entrada del usuario y manejar los casos en los que la entrada no es un entero válido. Utilizaremos la clase Scanner, que vimos brevemente en "Your First Java Lab" (Tu primer laboratorio de Java), para leer la entrada del usuario.
Abre el archivo
EvenCheck.javaen el editor WebIDE.Reemplaza todo el contenido del archivo con el siguiente código:
import java.util.Scanner;
import java.util.InputMismatchException;
public class EvenCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
try {
int number = scanner.nextInt(); // Read integer input from the user
// Use the modulo operator to check for a remainder when divided by 2
if (number % 2 == 0) {
System.out.println(number + " is an even number.");
} else {
System.out.println(number + " is an odd number.");
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter an integer.");
} finally {
scanner.close(); // Close the scanner
}
}
}
Veamos los cambios:
import java.util.Scanner;: Importa la claseScannerpara leer la entrada.import java.util.InputMismatchException;: Importa la clase de excepción que se lanza cuando la entrada no coincide con el tipo esperado.Scanner scanner = new Scanner(System.in);: Crea un objetoScannerpara leer la entrada desde la consola.System.out.print("Enter an integer: ");: Pide al usuario que ingrese un número.try { ... } catch (InputMismatchException e) { ... }: Este es un bloquetry-catch, que se utiliza para el manejo de errores. El código dentro del bloquetryse ejecuta. Si se produce unaInputMismatchException(lo que significa que la entrada no es un entero), se ejecuta el código dentro del bloquecatch.int number = scanner.nextInt();: Esta línea intenta leer un entero de la entrada del usuario. Si el usuario ingresa algo que no se puede interpretar como un entero, se lanza unaInputMismatchException.System.out.println("Invalid input. Please enter an integer.");: Este mensaje se imprime si se captura unaInputMismatchException.finally { scanner.close(); }: El código dentro del bloquefinallysiempre se ejecuta, independientemente de si se produjo una excepción o no. Se utiliza aquí para cerrar el recursoScanner.
Guarda el archivo.
Compila el programa modificado en la Terminal:
javac EvenCheck.java
- Ejecuta el programa:
java EvenCheck
- Cuando se te solicite, ingresa un entero (por ejemplo,
15) y presiona Enter. El programa debería identificar correctamente si es par o impar.
Enter an integer: 15
15 is an odd number.
- Ejecuta el programa de nuevo:
java EvenCheck
- Esta vez, cuando se te solicite, ingresa un valor no entero (por ejemplo,
helloo3.14) y presiona Enter. El programa ahora debería manejar la entrada no válida de manera adecuada.
Enter an integer: hello
Invalid input. Please enter an integer.
Al agregar el bloque try-catch, nuestro programa es ahora más robusto y puede manejar casos en los que el usuario proporciona una entrada que no está en el formato esperado. Esto es un aspecto importante de la escritura de programas amigables con el usuario.
Resumen
En este laboratorio, aprendimos cómo verificar si un número es par en Java utilizando el operador módulo (%). Descubrimos que un número par tiene un residuo de 0 cuando se divide entre 2. Implementamos un sencillo programa en Java utilizando una declaración if-else para realizar esta comprobación e imprimir si un entero dado es par o impar.
Exploramos además la prueba de la comprobación de paridad con entradas de enteros positivos y negativos para asegurarnos de que el operador módulo se comporte como se espera para diferentes signos. Finalmente, consideramos cómo manejar entradas no enteras, entendiendo que el operador módulo se utiliza típicamente con tipos enteros y discutiendo enfoques potenciales para validar los tipos de entrada o manejar excepciones en una aplicación más robusta.



