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...
#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.
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
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 }
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;
}
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;
}
}
Gracias @shellroot aunque todavía no entiendo muy bien la parte donde se hace el substring y el ==0.
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 :
string variable = "pedro";
variable.substring(1,2);
si lo imprimes te arroja esto :
ped
espero que te ayude un poco.