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: Juanfran.ib en 26 de Julio 2023, 13:45

Título: El método equals, ejercicio CU00662B
Publicado por: Juanfran.ib en 26 de Julio 2023, 13:45
Hola, aquí mi propuesta de solución al ejercicio.

He usado la clase EntradaDeTeclado que habíamos creado en un ejercicio anterior. Aquí dejo el código de dicha clase:

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

// Definimos una clase EntradaDeTeclado

public class EntradaDeTeclado {

    private String entradaTeclado; //Variable de instancia (campo) de la clase


    public EntradaDeTeclado ()  { //Constructor

        entradaTeclado="";

        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método

    } //Cierre del constructor


    public void pedirEntrada ()  {  //Método de la clase         

        Scanner entradaEscaner = new Scanner (System.in);

        entradaTeclado = entradaEscaner.nextLine ();     } //Cierre del método pedirEntrada


    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public String getPrimeraPalabra ()  {

        for (int i=0; i < entradaTeclado.length() - 1; i++) {

            if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }

        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya

    } //Cierre del método getPrimeraPalabra


    public int getLongitud ()  {  //Método de la clase

        return entradaTeclado.length();

    } //Cierre del método getLongitud

} //Cierre de la clase

La clase ComparadorPalabras es la que realiza lo que se pide en el ejercicio,  soy consciente de que permite comparar palabras y también permite la entrada de frases, incluyendo espacios. Las compara hasta la longitud más larga de las dos cadenas introducidas. Si no es correcto puedo corregirlo para que la entrada que se permita sea sólo de palabras sin espacios :

Código: [Seleccionar]
import java.util.Scanner;
public class ComparadorPalabras {

    public static void main (String [ ] args) {
        System.out.println ("Empezamos el programa");     
        System.out.println ("Por favor introduzca la palabra 1:");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println ("Por favor introduzca la palabra 2:");
        EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println ("Gracias");
        System.out.println ("La entrada 1 ha sido \"" + entrada1.getEntrada() + "\" y consta de " + entrada1.getLongitud () + " caracteres");
        System.out.println ("La entrada 2 ha sido \"" + entrada2.getEntrada() + "\" y consta de " + entrada2.getLongitud () + " caracteres");
        int i = 0;
        int longitud1 = entrada1.getLongitud () ;
        int longitud2 = entrada2.getLongitud () ;
        int longitud = longitud2;
        if (longitud1>longitud2){longitud = longitud1;
        }//con esto establecemos las veces que se repite el bucle for hasta  la longitud de la cadena más larga de las dos introducidas

        for (i=0; i<longitud;i++)
        {

            int j = i +1;
            String palabra1 =entrada1.getEntrada();
            String palabra2 =entrada2.getEntrada();
            String subcadena1 = "" ;
            String subcadena2 = "";

            if (i<longitud1) {subcadena1 = palabra1.substring(i,j);}
            if (i<longitud2) {subcadena2 = palabra2.substring(i,j);}
            System.out.println ("¿Letra "+ (i+1) + " igual en las dos palabras? "+ subcadena1.equals(subcadena2));
            if (i>=longitud1)
            {
                System.out.println ("La palabra 1 no tiene letra " + (i+1));
            }

            else if (i>=longitud2)
            {
                System.out.println ("La palabra 2 no tiene letra " + (i+1));
            }

            else {
                System.out.println ("La letra "+ (i+1)+" de la palabra 1 es " + subcadena1);
                System.out.println ("La letra "+ (i+1) +" de la palabra 2 es " + subcadena2);}
        }
    }
}

Gracias por vuestra atención.
Título: Re: El método equals, ejercicio CU00662B
Publicado por: Kabuto en 27 de Julio 2023, 11:23
A mí me parece correcto y la ejecución funciona.
Así que, adelante con el resto del curso  ;D