Esta es mi primera vez haciendo una pregunta y he tratado de buscar los hilos existentes en primer lugar. Mi programa está destinado a pedir al usuario que introduzca un número de 5 dígitos y se verificará para ver si es un palíndromo invirtiendo el número y luego comparando el número original a la inversa. También puse en algunos pasos de verificación allí para rechazar el número si es más largo o más corto que 5 dígitos. Todo parece funcionar hasta que llegue a la parte comparando el número original y el número inverso. Aquí está mi código:
import java.util.Scanner;
public class Palindromes {
public static void main(String args[]) {
int n, reverse = 0;
System.out.println("Enter a 5-digit integer to see if it is a palindrome.");
Scanner in = new Scanner(System.in);
n = in.nextInt();
int length = String.valueOf(n).length();
while (length > 5 || length < 5) {
System.out.println("Error: integer must be 5 digits in length.");
System.out.println("Enter a 5-digit integer.");
n = in.nextInt();
length = String.valueOf(n).length();
}
while (length == 5 && n != 0) {
reverse = reverse * 10;
reverse = reverse + n % 10;
n = n / 10;
}
System.out.println("Reversed number is: " + reverse);
if (n == reverse) {
System.out.println("Congratulations! Your number is a palindrome!");
} else {
System.out.println("Sorry. Your number isn't a palindrome.");
}
}
}
Mira lo que está haciendo aquí!
while (length == 5 && n != 0) {
reverse = reverse * 10;
reverse = reverse + n % 10;
n = n / 10; // <----- You are changing "n"!
}
Lo que significa que después del bucle, n
ya no serán los mismos n
que el usuario ha introducido.
Para solucionar este problema, copie n
a otra variable y modificar en su lugar.
int temp = n;
while (length == 5 && temp != 0) {
reverse = reverse * 10;
reverse = reverse + temp % 10;
temp = temp / 10;
}