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