Autor Tema: ENTREGA:CU00662B comparar dos palabras con distinta longitud java  (Leído 6089 veces)

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
AYUDA
Citar
Bueno Amigo Aquí esta la entrega CU00662B Tengo un problema en realidad no se como hacer para que el ejercicio me compare dos cadenas de longitud distinta por ejemplo "Avispa" y "Ave" el ejercicio compara esas dos cadenas e incluso dice si las letras son verdaderas o falsa  lo que le faltaría decir es cuanta letras le falta una cadena para que se iguale a la otra en realidad le e buscado la vuelta para realizar ese código y no e podido aquí publico el Ejercicio a ver si me pueden explicar una manera de hacerlo por favor ...


ENUNCIADO DEL EJERCICIO  :

   Crea una clase en cuyo método main ejecutes una comparación letra a letra usando equals de dos palabras usando bucles. Por ejemplo si las palabras son “avispa” y “ave”
   el programa debe dar como resultado: ¿Letra 1 igual en las dos palabras? True. ¿Letra 2 igual en las dos palabras? True
   ¿Letra 3 igual en las dos palabras? False ¿Letra 4 igual en las dos palabras?
   La palabra 2 no tiene letra 4 ¿Letra 5 igual en las dos palabras? La palabra 2 no tiene letra 5 ¿Letra 6 igual en las dos palabras? La palabra 2 no tiene letra 6.

Código: [Seleccionar]
import java.util.Scanner;
public class Comparar
{
    public static void main(String [] args)
    {
    Scanner entradaTeclado= new Scanner(System.in);
    System.out.println("Introdusca la primera cadena");
    String cadena1=entradaTeclado.nextLine();
    System.out.println("Introdusca la primera cadena");
    String cadena2=entradaTeclado.nextLine();
    int longitudCadena1=cadena1.length();
    int longitudCadena2=cadena2.length();

     int longitud=0; //longitud de la cadena mas larga;
   
     if(longitudCadena1>longitudCadena2)
     {
         longitud=longitudCadena1;
         
     }else
        {
            longitud=longitudCadena2;
        }     
        String recorridoCadena1;
        String recorridoCadena2;
     
     for(int i=0;i<longitud;i++)
     {       
         recorridoCadena1=cadena1.substring(i,i+1);
         recorridoCadena2=cadena2.substring(i,i+1);
         System.out.println((i+1)+ " Letra De La Cadena uno : " + recorridoCadena1+  " || " + (i+1)+" Letra De la Cadena dos : " + recorridoCadena2);
         
         if(cadena1.substring(i,i+1).equals(cadena2.substring(i,i+1)))
         {
             System.out.println("Son Iguales :" + true);
         }else
         {
             System.out.println("Son Iguales :" + false);
     
         }             
        }
       
        }
  }



« Última modificación: 09 de Septiembre 2014, 08:44 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:ENTREGA:CU00662B comparar dos palabras con distinta longitud java
« Respuesta #1 en: 09 de Septiembre 2014, 08:52 »
Hola, el código genera un error si se introducen dos cadenas como "ave" y "avecesar" porque estás tratando de extraer índices que no existen en una cadena, en concreto aquí:

recorridoCadena1=cadena1.substring(i,i+1);
recorridoCadena2=cadena2.substring(i,i+1);

Estás tratando de extraer un índice, el mismo índice para las dos cadenas, pero ¿qué ocurre si una cadena es muy larga y la otra corta? Que el índice que existe en una no existe en la otra (porque al ser más corta tiene menos índices).

Eso da lugar a que aparezca un error "java.lang.StringIndexOutOfBoundsException: String index out of range"

La lógica que tendrías que aplicar es:

1. Determinar la longitud máxima

2. Crear un bucle desde i=0 hasta la longitud máxima

3. Si existen los dos índices para las dos palabras (es decir, su longitud es mayor o igual que la longitud máxima) mostrar la comparación, si no existen indicar que una palabra no es suficientemente larga para comparar

Te recomiendo que revises el código que se encuentra en esta solución: https://www.aprenderaprogramar.com/foros/index.php?topic=1292.0

Analízalo y estudia paso a paso qué es lo que hace, ahí encontrarás una buena orientación.

Saludos

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
Re:ENTREGA:CU00662B comparar dos palabras con distinta longitud java
« Respuesta #2 en: 09 de Septiembre 2014, 17:02 »

Citar
CORRECCIÓN
Citar

Para : Alex Rodriguez

Muchas Gracias por tu aporte amigo ya observe el ejercicio que me enviaste y arregle el ejercicio ahora de mi parte  creo que esta correcto  subo de nuevo el ejercicio para que lo vean.De  nuevo

Muchas Gracias...

Código: [Seleccionar]
import java.util.Scanner;
public class Comparar
{
    public static void main(String [] args)
    {
        Scanner entradaTeclado= new Scanner(System.in);
        System.out.println("Introdusca la primera cadena");
        String cadena1=entradaTeclado.nextLine();
        System.out.println("Introdusca la primera cadena");
        String cadena2=entradaTeclado.nextLine();       
        int longitudCadena1=cadena1.length();
        int longitudCadena2=cadena2.length();
        int longitud=0; //Esta Variable Es para Evaluar Cual es la Cadena Mas Larga

        if(longitudCadena1>longitudCadena2)
        {
            longitud=longitudCadena1;

        }else
        {
            longitud=longitudCadena2;
        }     //Fin Evaluar La Cadena Mas Larga;
        int muestra1=0;//Variable para Realizar el rrecorrido de la Cadena;
        int muestra2=0;//Variable para Realizar el rrecorrido de la Cadena;
        for(int i=0;i<longitud;i++)
        {       
            if(i < longitudCadena1){muestra1= i+1;}
            if(i < longitudCadena2){muestra2= i+1;}

            System.out.println((i+1)+ " Letra De La Cadena uno : " + cadena1.substring(0,muestra1)+  " || " + (i+1)+" Letra De la Cadena dos : " + cadena2.substring(0,muestra2));

            if(longitudCadena1 < i+1)
            {
                System.out.println("La Cadena Uno No Tiene Letra " + (i+1));
            }else if(longitudCadena2 < i+1)
            {
                System.out.println("La Cadena Dos No Tiene Letra " + (i+1));
            }else
            {
                if(cadena1.substring(i,i+1).equals(cadena2.substring(i,i+1)))
                {
                    System.out.println("Son Iguales :" + true);
                }else
                {
                    System.out.println("Son Iguales :" + false);

                }
            }// Fin IF Anidado;

        }//Fin del Bucle;
    }//Fin Del Void Main;
}//Fin De La Clase;


Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:ENTREGA:CU00662B comparar dos palabras con distinta longitud java
« Respuesta #3 en: 09 de Septiembre 2014, 17:43 »
Sí, ahora bastante mejor. Puedes intentar mejorarlo todavía más: intentar extraer letra a letra en lugar de la palabra desde el inicio. Es decir si las palabras son barco y barcaza extraer: b - b (iguales)
a- a (iguales)
r-r (iguales)
c-c (iguales)
o - a (distintos)
 - z (la primera palabra no tiene letra)
 - a (la primera palabra no tiene letra)

La lógica básica la tienes, lo que tendrías que hacer es introducir las modificaciones precisas. Te puedes guiar por el ejercicio de referencia que te indiqué antes.

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