| Ayuda | - | Me Pueden Hacer El Favor De Explicar Este Código Detalladamente? |

Iniciado por JADP, 18 Diciembre 2013, 21:41 PM

0 Miembros y 1 Visitante están viendo este tema.

JADP

Hola a todos, estoy estudiando el método String.substring en Java - Eclipse y me encontré con este ejercicio del numero Capicúa, pero no logro entender bien el código,  les pido el favor si pueden ser lo mas detallado posible en la explicación del código del ejercicio.

package nm;

import javax.swing.JOptionPane;

public class nn {

public static void main (String[] x){
String numero = JOptionPane.showInputDialog("Ingresa un numero");
System.out.println("INGRESASTE EL NUMERO: "+numero);
System.out.println("\nIMPRIMENDO EL NUMERO AL REVES: "+invertido(numero));

if(numero.
compareTo(invertido(numero))==0)

System.out.println("\nSI ES UN NUMERO CAPICUA");
else
System.out.println("\nNO ES UN NUMERO CAPICUA");
}

private static String invertido(String numero) {
String result = "";
for (int i = numero.length() - 1; i >= 0; i--){
result = result + numero.substring(i, i+1);
}
return result;
}

}


Agradezco sus ayudas...

Shell Root

#1 Ingresa un número y lo guarda en la variable numero de tipo string.
#2 Muestra el número ingresado
#3 Imprime el número al reves con el uso de una función de nombre invertido que tiene como parametro un string.
Código (java) [Seleccionar]
String numero = JOptionPane.showInputDialog("Ingresa un numero");
System.out.println("INGRESASTE EL NUMERO: "+numero);
System.out.println("\nIMPRIMENDO EL NUMERO AL REVES: "+invertido(numero));


#1 Condicional donde compara el número ingresado y el número invertido
#2 Sí es verdadero muestra SI ES UN NUMERO CAPICUA
#3 De lo contrario
#4 Muestra NO ES UN NUMERO CAPICUA
Código (java) [Seleccionar]
if(numero.compareTo(invertido(numero))==0)
  System.out.println("\nSI ES UN NUMERO CAPICUA");
else
  System.out.println("\nNO ES UN NUMERO CAPICUA");





#1 Declaración de la función invertido con un parametro string
#2 Declaración de variable result de tipo string
#3 Ciclo que empieza desde la última posición del número ingresado hasta que i sea meyor o igual a 0 con decrementos de 1
#4 {
#5 Guarda el valor de la posición i en la variable result
#6 }
#7 retornar resultado
#8 }
Código (java) [Seleccionar]
private static String invertido(String numero) {
  String result = "";
  for (int i = numero.length() - 1; i >= 0; i--)
  {
     result = result + numero.substring(i, i+1);
  }
  return result;
}





Código (java) [Seleccionar]
public class HelloWorld{

     public static void main(String []args){
        String numero = "1234";
        System.out.println("INGRESASTE EL NUMERO: " + numero);
        System.out.println("IMPRIMENDO EL NUMERO AL REVES: " + invertido(numero));
       
        if(numero.compareTo(invertido(numero))==0)
            System.out.println("\nSI ES UN NUMERO CAPICUA");
        else
            System.out.println("\nNO ES UN NUMERO CAPICUA");
     }
     
     private static String invertido(String numero){
        String result = "";
        for (int i = numero.length() - 1; i >= 0; i--)
        {
            result = result + numero.substring(i, i+1);
        }
       
        return result;
    }
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

JADP

Gracias @shellroot  aunque todavía no entiendo muy bien la parte donde se hace el substring  y el ==0.

dainodaibouken

Código (java) [Seleccionar]
if(numero.compareTo(invertido(numero))==0)

compara la variable "numero" invocando el metodo invertido, este metodo lo que hace es usar la clase substring para contar los caracteres de la variable "numero"

la clase substring hagarra la variable string "Pedro" y te retorna los caracteres que le indiques por ejemplo :

Código (java) [Seleccionar]
string variable = "pedro";
variable.substring(1,2);


si lo imprimes te arroja esto :
ped

espero que te ayude un poco.