Autor Tema: Java ejercicio resuelto comparar letra a letra dos palabras CU00662B Scanner  (Leído 5265 veces)

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
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);

    }

}
« Última modificación: 01 de Junio 2015, 08:38 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Ejercicios Cu00662B de java
« Respuesta #1 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!

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
« Respuesta #2 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));
            }
        }

    }
}

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
« Respuesta #3 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!

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
« Respuesta #4 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));
            }
        }

    }

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
« Respuesta #5 en: 29 de Mayo 2015, 20:14 »
Gracia no probé luego toda forma posible

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
« Respuesta #6 en: 29 de Mayo 2015, 23:12 »
Perfecto Ramón, tu clase está muy bien. A seguir adelante!

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java ejercicio resuelto comparar letra a letra dos palabras CU00662B
« Respuesta #7 en: 29 de Mayo 2015, 23:14 »
Gracia por lo consejo así voy a mejorar

 

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