Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: DRANXZ88 en 28 de Mayo 2015, 19:49

Título: Java ejercicio resuelto comparar letra a letra dos palabras CU00662B Scanner
Publicado por: DRANXZ88 en 28 de Mayo 2015, 19:49
Clase teclado para crear el teclado y buscar palabra

Código: [Seleccionar]
package ejercicioscu00662b;

import java.util.Scanner;

public class Teclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public Teclado() {
        entradaTeclado = "";
    }

    public String buscarPalabra() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }

}

Clase para verificar las letra

Código: [Seleccionar]
package ejercicioscu00662b;

public class VerificarLetra {

    public String comprobarLetra(String palabra_1, String palabra_2) {
        int limiteSup;
        int limiteInf;
        int text;
        String comprovadorLetra = "";

        if (palabra_1.length() > palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 2;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 1;
            limiteSup = palabra_1.length();
        }
        if (palabra_1.length() < palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 1;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 2;
            limiteSup = palabra_1.length();
        }
        for (int i = 0; i < limiteSup; i++) {
            if (i < limiteInf) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
            }
        }

        return comprovadorLetra;

    }
}

Clase principal  main
Código: [Seleccionar]
public class EjerciciosCu00662B {

    public static void main(String[] args) {
        Teclado teclado = new Teclado();
        VerificarLetra verificar = new VerificarLetra();

        System.out.println("Introduce la primera palabra");
        String palabra_1 = teclado.buscarPalabra();
        System.out.println("Introduce la segunda palabra");
        String palabra_2 = teclado.buscarPalabra();

        verificar.comprobarLetra(palabra_1, palabra_2);

    }

}
Título: Re:Ejercicios Cu00662B de java
Publicado por: RaGa en 29 de Mayo 2015, 02:21
Hola Ramón!

Al programa lo veo muy bien. Funciona y responde a la consigna planteada en el ejercicio. Veo cosas muy destacables en tu planteo.
Entre lo destacable: el código está muy bien organizado dividiendo las tareas en clases.
Tienes una clase cuya tarea será tomar los datos entrantes por el teclado. Otra clase que verificará la aparición en orden de las letras iguales en las dos palabras. Y por último una clase donde está el método principal el cual es corto. Eso está muy bien!

Por otro lado hay algo que me ha llamado la atención en la clase VerificarLetra. Tienes dos if seguidos (cada uno con su respectivo else). Al primer if (con su else) deberías borrarlo. El programa funciona correctamente con el segundo if (con su else).
Seguramente fuiste trabajando el código, probando distintas posibilidades, y se te olvidó de borrar esa parte.  ;)

Y por último te haría una sugerencia: a la clase Teclado yo la renombraría por un nombre más significativo a lo que hace. La clase -tal como está planteado tu código- es un GestionadorDeEntradasTeclado. Creo que ese nombre es más apropiado para esa clase (o algo similar).
Lo mismo que a su método buscarPalabra() también lo renombraría por algo que sea más alusivo, por ejemplo podría bien llamarse recogerPalalabra(), que verdaderamente es lo que hace.

A seguir adelante!
Título: Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
Publicado por: DRANXZ88 en 29 de Mayo 2015, 17:44
Modifique el código ademas le saque el string y le como void
Código: [Seleccionar]
package ejercicioscu00662b;

public class VerificarLetra {

    public void comprobarLetra(String palabra_1, String palabra_2) {
        int limiteSup;
        int limiteInf;
        int text;

        if (palabra_1.length() > palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 2;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 1;
            limiteSup = palabra_1.length();
        }
        for (int i = 0; i < limiteSup; i++) {
            if (i < limiteInf) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
            }
        }

    }
}
Título: Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
Publicado por: RaGa en 29 de Mayo 2015, 19:08
Está muy bien el cambio que hiciste en convertir el método comprobarLetra en tipo procedimiento.

Sin embargo, fíjate que tal como está tu clase ahora, si las palabras tienen distinta cantidad de letras, no se indica por consola que "La palabraX no tiene letra N".
Eso es debido a lo que te indiqué en el post anterior. ¿Recuerdas que tenías dos if (con sus respectivos else) seguidos en tu código?. Debías borrar el primer if con sus respectivo else. Tu borraste el segundo if con su else (que era el que funcionaba bien).

Analicemos ese segundo if que funciona correctamente:

Código: [Seleccionar]
if (palabra_1.length() < palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 1;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 2;
            limiteSup = palabra_1.length();
        }

Fíjate que si la longitud de la plabra_1 es menor a la longitud de la palabra_2 , pues entonces a la variable limiteInf se le asigna la longitud de la palabra_1 , y a la variable limiteSup se le asigna la longitud de la la palabra_2

(el else haría lo contrario).

Por lo tanto la clase completa nos quedaría:

Código: [Seleccionar]
package ejercicioscu00662b;
public class VerificarLetra {

    public void comprobarLetra(String palabra_1, String palabra_2) {
        int limiteSup;
        int limiteInf;
        int text;

        if (palabra_1.length() < palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 1;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 2;
            limiteSup = palabra_1.length();
        }
        for (int i = 0; i < limiteSup; i++) {
            if (i < limiteInf) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
            }
        }

    }
}


Analízalo, y cualquier duda acá estamos para ayudarte!
Título: Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
Publicado por: DRANXZ88 en 29 de Mayo 2015, 20:13
Código: [Seleccionar]
package ejercicioscu00662b;

public class VerificarLetra {

    public void comprobarLetra(String palabra_1, String palabra_2) {
        int limiteSup;
        int limiteInf;
        int text;

        if (palabra_1.length() < palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 1;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 2;
            limiteSup = palabra_1.length();
        }
        for (int i = 0; i < limiteSup; i++) {
            if (i < limiteInf) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
            }
        }

    }
Título: Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
Publicado por: DRANXZ88 en 29 de Mayo 2015, 20:14
Gracia no probé luego toda forma posible
Título: Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
Publicado por: RaGa en 29 de Mayo 2015, 23:12
Perfecto Ramón, tu clase está muy bien. A seguir adelante!
Título: Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
Publicado por: DRANXZ88 en 29 de Mayo 2015, 23:14
Gracia por lo consejo así voy a mejorar