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

JuanMontaña

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 87
    • Ver Perfil
Saludos, se me presentó un problema a la hora de dar solucion a el ejercicio completo de la leccion CU00662B del curso de java. El código es:

Código: [Seleccionar]
import java.util.Scanner;
public class ComparadorLetraPorLetra
{
public static void main  (String[]args){
System.out.println ("Inserta las dos cadenas a comparas");
String cadena1="";
String cadena2="";
Scanner entradaTeclado=new Scanner(System.in);
cadena1=entradaTeclado.nextLine();
cadena2=entradaTeclado.nextLine();
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("la letra"+" "+i+" "+"es igual en las dos cadenas ");
           
            }
}
}
}

Este es el codigo hasta donde llevo bien el problema es que no se como hacer cuando una cadena es mas larga que la otra debido a que me arroja error.  Esperaré por su ayuda. Muchas gracias
« Última modificación: 23 de Noviembre 2015, 08:30 por Ogramar »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:CU00662B Comparacion de objetos
« Respuesta #1 en: 22 de Noviembre 2015, 15:36 »
Buenos dias, antes del for, comprueba que cadena es mas CORTA que la otra, así no te dara error, es decir;

Código: [Seleccionar]
int cadenaMenor = cadena1.length();
if (cadena2.length() < cadena1.length()) { cadenaMayor = cadena2.length(); }

for (int i=0; i < cadenaMenor; i++)
        {
            if (cadena1.substring (i, i+1).equals(cadena2.substring (i,i+1)))
            {   
                System.out.println("la letra"+" "+i+" "+"es igual en las dos cadenas ");
           
            }
el resto hasta la cadena mayor , no seran iguales nunca por carecer de esos caracteres.

Saludos.

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Perdona donde pone cadenaMayor = cadena2.length(); va cadenaMenor, supongo que mas o menos me entendiste la idea :)

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".