Java - Duda con código (palíndromos)

 
Vista:

Duda con código (palíndromos)

Publicado por Armando (1 intervención) el 15/11/2018 21:06:46
Hola, buen día, llevo apenas un mes en el mundo de la programación, esta pagina me ha servido mucho para cursos y apoyo en resolución de problemas.

Estoy realizando el código de un problema pero a la hora de correrlo me marca errores (no imprime lo que deseo). Les dejo el código para que alguien bondadoso me eche la mano.

Muchas gracias!!

(Palindromes) A palindrome is a sequence of characters that reads the same backward as for- ward. For example, each of the following five-digit integers is a palindrome: 12321, 55555, 45554 and 11611. Write an application that reads in a five-digit integer and determines whether it’s a palindrome. If the number is not five digits long, display an error message and allow the user to enter a new value.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package palindromos;
 
import javax.swing.JOptionPane;
 
public class Palindromos {
 
    public static void main(String[] args) {
 
        int numero;
        int a, b, c, d, e;
 
        numero = Integer.parseInt(JOptionPane.showInputDialog("Digite un numero de 5 digitos"));
        a = numero / 10000;
        b = numero / 1000 % 10;
        c = numero / 100 % 10;
        d = numero / 10 % 10;
        e = numero % 10;
 
        if (a == e && b == d) {
            JOptionPane.showMessageDialog(null, "El numero es un palindromo");
        }
        while (a != e && b != d) {
            JOptionPane.showMessageDialog(null, "El numero no es un palindromo");
            if (numero > 99999) {
                JOptionPane.showMessageDialog(null, "No es un numero de 5 diitos");
            } else if (numero < 10000) {
                JOptionPane.showMessageDialog(null, "No es un numero de 5 diitos");
            }
            numero = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite otro numero"));
 
        }
 
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Duda con código (palíndromos)

Publicado por Tom (1831 intervenciones) el 16/11/2018 09:09:22
1.- Define mejor lo que quieres decir con eso de los errores.
2.- En nuestro idioma, de lo que estás hablando es de capicúas, no de palíndromos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Duda con código (palíndromos)

Publicado por Kabuto (1381 intervenciones) el 18/11/2018 23:29:27
El orden de la lógica seguida no es la ideal.
Lo ideal sería comprobar primero si la longitud del número es la correcta y luego averiguar si es palíndromo o no.

Pruebalo así. Fíjate además que no necesitamos la variable c, es decir, la del dígito central:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) {
 
    int numero = 0;
    int a, b, d, e;
 
    do {
        numero = Integer.parseInt(JOptionPane.showInputDialog("Digite un numero de SOLO 5 digitos"));
    }while(numero > 99999 || numero < 10000);
 
 
    a = numero / 10000;
    b = numero / 1000 % 10;
    //c = numero / 100 % 10;
    d = numero / 10 % 10;
    e = numero % 10;
 
    if (a == e && b == d)
        JOptionPane.showMessageDialog(null, "El numero es un palindromo");
    else
        JOptionPane.showMessageDialog(null, "El numero no es un palindromo");
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Duda con código (palíndromos)

Publicado por Billy Joel (876 intervenciones) el 20/11/2018 21:55:11
Hola en estos días contesté un pregunta sobre palindromos también y bueno tal vez te sirva.
Esta solución en lugar de evaluar si un número es un palindromo evalúa palabras.
Entonces lo que hago es evaluar caracter por caracter, el primero con el último, el segundo con el penúltimo y así.
1
2
3
4
5
6
7
8
9
10
11
12
13
public boolean isPalindromo(String word){
    char [] c = word.replace(" ", "").toCharArray();
    for (int i = 0; i < c.length; i++) {
        if(c[i] != c[c.length-1-i]){
            return false;
        }
        //Si ya evaluamos la mitad de la palabra no hace falta evaluar la otra mitad
        if(i >= c.length / 2){
            break;
        }
    }
    return true;
}

Espero te sirva.
Saludos!!
;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar