Autor Tema: java.lang.StringIndexOutOfBoundsException: String index out of range CU00662B  (Leído 4910 veces)

Javieerg

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
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:

Código: [Seleccionar]
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..");
            }
        }
    }
}
« Última modificación: 19 de Octubre 2015, 08:29 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:El método equals en Java.CU00662B
« Respuesta #1 en: 18 de Octubre 2015, 02:42 »
Hola Javieerg.

En el for pones esto:

Código: [Seleccionar]
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:

Código: [Seleccionar]
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.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Citar
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.


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".