Comprobador de Números Palíndromos en Java: Algoritmos con Bucles While y For
¿Qué es un Número Palíndromo?
Un número palíndromo se lee igual de izquierda a derecha que de derecha a izquierda. Ejemplos: 121, 393, 48084. Presentan simetría axial y son comunes en acertijos algorítmicos.
En Java, las comprobaciones de palíndromos son frecuentes en entrevistas y retos de programación. El algoritmo es sencillo pero puede implementarse de varias formas.
Resumen del Algoritmo
- Leer el entero de entrada.
- Invertir sus dígitos y almacenar el resultado.
- Comparar el número invertido con el original.
- Si coinciden, el número es palíndromo; de lo contrario, no lo es.
Comprobación con Bucle While
A continuación se muestra un programa Java conciso que usa un bucle while para invertir el número y determinar si es palíndromo. El código imprime pasos intermedios para ilustrar el proceso.
package com.guru99;
public class NumeroPalindromo {
public static void main(String[] args) {
int numeroEntrada = 171; // número a comprobar
int invertido = 0;
int temp = numeroEntrada;
while (temp > 0) {
int ultimoDigito = temp % 10;
invertido = (invertido * 10) + ultimoDigito;
temp /= 10;
}
System.out.println("Número invertido: " + invertido);
if (invertido == numeroEntrada) {
System.out.println("El número es un palíndromo.");
} else {
System.out.println("El número no es un palíndromo.");
}
}
}
Salida
Número invertido: 171 El número es un palíndromo.
Comprobación con Bucle For
La misma lógica puede expresarse con un bucle for, que puede ser preferible en contextos donde el contador del bucle se expresa naturalmente como un índice decreciente.
package com.guru99;
public class NumeroPalindromo {
public static void main(String[] args) {
int numeroEntrada = 185; // número a comprobar
int invertido = 0;
int temp = numeroEntrada;
for (; temp > 0; temp /= 10) {
int ultimoDigito = temp % 10;
invertido = (invertido * 10) + ultimoDigito;
}
System.out.println("Número invertido: " + invertido);
if (invertido == numeroEntrada) {
System.out.println("El número es un palíndromo.");
} else {
System.out.println("El número no es un palíndromo.");
}
}
}
Salida
Número invertido: 581 El número no es un palíndromo.
Consideraciones y Mejores Prácticas
- Números Negativos: Por definición, los números negativos no se consideran palíndromos debido al signo menos inicial. Devuelva
falseinmediatamente si la entrada es negativa. - Desbordamiento: Invertir un entero de 32 bits puede desbordar. Para código de producción, use
longo verifique desbordamiento antes de cada multiplicación. - Enfoque con String: Convertir el número a cadena y compararlo con su inversa es a menudo más simple y menos propenso a errores, especialmente para números muy grandes.
Para explicaciones más detalladas, consulte GeeksforGeeks y discusión en Stack Overflow sobre invertir números.
Java
- Dominando bucles while y do-while en C#: Sintaxis, ejemplos y mejores prácticas
- Dominando el bucle for en C#: Sintaxis, flujo y ejemplos prácticos
- Dominando los Bucles for en C++: Guía Paso a Paso
- Domine los Bucles en Python: For, While, Break, Continue y Enumerate Explicados
- Java Hello World: Tu Primer Programa
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Programa en Java para Determinar si un Número es Primo
- Programa en Java para Listar Números Primos del 1 al 100 – Guía Paso a Paso
- Generar Secuencia Fibonacci en Java: Ejemplos con For, While y Recursión
- Programa en Java para Identificar Números de Armstrong Usando Bucle For
- Comprobador de Números Palíndromos en Java: Algoritmos con Bucles While y For