Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: niurkafer en 19 de Agosto 2015, 17:26

Título: Java comparar dos palabras por letras siendo una más corta que la otra CU00662B
Publicado por: niurkafer en 19 de Agosto 2015, 17:26
Me ha costado un poco pero me gustaria saber que tal ha quedado el ejercicio CU00662B

Citar
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 ComparacionLetra {
    private String palabra1;
    private String palabra2;

    public static void main (String [ ] Args) {
        System.out.println ("por favor introduzca La primera Palabra: ");
        Scanner entrada1 = new Scanner(System.in);
        String palabra1 = entrada1.nextLine();
        System.out.println ("por favor introduzca la segunda palabra: ");
        Scanner entrada2 = new Scanner(System.in);
        String palabra2 = entrada1.nextLine();

        if (palabra1.length() >= palabra2.length()){
            int i = 0;

            while (i<palabra2.length()){

                if(palabra1.substring(i,i+1).equalsIgnoreCase(palabra2.substring(i,i+1))){
                    System.out.println ("¿Letra " +(i+1)+" es igual en las dos palabras?: True");
                }

                else{ System.out.println ("¿Letra " +(i+1)+" es igual en las dos palabras?: False");
                }

                i++;
            }

            while(i < palabra1.length()){
                System.out.println("¿Letra " + (i+1) + " es igual en las dos palabras?: La palabra 2 no tiene letra " + (i+1));
                i++;
            }

        }else{
            int i = 0;
            while(i < palabra1.length()){
                if(palabra1.substring(i, i+1).equalsIgnoreCase(palabra2.substring(i, i+1))){
                    System.out.println("¿Letra " + (i+1) + " es igual en las dos palabras?: True");
                }else{
                    System.out.println("¿Letra " + (i+1) + " es igual en las dos palabras?: False");
                }
                i++;
            }

            while(i < palabra2.length()){
                System.out.println("¿Letra " + (i+1) + " es igual en las dos palabras?: La palabra 1 no tiene " +(i+1)+" letras ");
                i++;
            }

        }
    }
}
Título: Re:Metodos equals en Java CU00662B
Publicado por: Ogramar en 21 de Agosto 2015, 23:41
Hola niurkafer, el código funciona según solicitaba el ejercicio, no obstante puede mejorarse.

Tu lógica ha sido "si la palabra 1 es más larga hago todo esto" y si la palabra 2 es más larga hago todo esto.

Pero nos queda un código más corto si examinamos las palabras y decimos, palabraMasLarga = ... y palabraMasCorta = ... y con eso solo hay que plantear un bucle y un proceso en lugar de dos, como se hace en el tema www.aprenderaprogramar.com/foros/index.php?topic=2089

Salu2
Título: Re:Java comparar dos palabras por letras siendo una más corta que la otra CU00662B
Publicado por: niurkafer en 25 de Agosto 2015, 18:49
ok vale muchas gracias