Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Javieerg en 18 de Octubre 2015, 02:09
-
Hola discupen he batallado mucho con este ejercicio CU00662B , es decir la ventana sí me indica si son iguales o no las letras pero al finalizar me pone este error "java.lang.StringIndexOutOfBoundsException: String index out of range: 5" si alguien pudiera aclararme las dudas por favor este es mi codigo:
import java.util.Scanner;
public class ComparacionPalabras{
public static void main(String []args){
System.out.println("Comenzamos ");
Scanner escaner = new Scanner(System.in);
String cadena1 = escaner.nextLine();
System.out.println("Primera palabra: " + cadena1);
String cadena2 = escaner.nextLine();
System.out.println("Segunda palabra: " + cadena2);
for(int i=0; i<=cadena1.length()|| i<=cadena2.length() ; i++){
if(cadena1.substring(i, i+1).equals(cadena2.substring(i, i+1))){
System.out.println("Letras " +(i+1)+ " son iguales");
} else {System.out.println("Letras " + (i+1) + " son diferentes");}
if(cadena1.substring(i, i+1).equals(" ") || cadena2.substring(i, i+1).equals(" ")) {
System.out.println("No hay letras para comparar..");
}
}
}
}
-
Hola Javieerg.
En el for pones esto:
i<=cadena1.length()|| i<=cadena2.length()
si escribes la palabra "rata" tanto en la cadea1 como en la cadena 2 ,cadena1.length() valdrá 4 y el for según está se ejecutará 5 veces, de 0 hasta 4.
en esta otra línea pones esto:
if(cadena1.substring(i, i+1).equals(cadena2.substring(i, i+1))){
lo que quiere decir que cuando i=4 al sumarle uno estarás intentando comparar un carácter que no existe ya que la palabra solo tiene 4 letras.
espero haberme explicado bien y te sirva para poder resolver el ejercicio.
Saludos.
-
Gracias pedro, pero cual seria la forma correcta de hacerlo, es decir entiendo lo que me dices mas no como corregirlo, gracias de nuevo
Vendría bien que mirases esta resolución del ejercicio, https://www.aprenderaprogramar.com/foros/index.php?topic=3337.0
y este otro, que resuelve de manera distinta, https://www.aprenderaprogramar.com/foros/index.php?topic=2089.msg10280#msg10280.
Como podrás comprobar, el fallo principal de tu ejercicio es que comparas las cadenas de caracteres antes de saber si una es mayor que otra.
Espero que te sirva.
Saludos.