Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 17 de Junio 2015, 05:47
-
Hola a todos, he aqui el desarrollo del ejercicio
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.
package ejemplo;
/*
programa que compara dos cadenas de texto letra por letra
*/
import java.util.Scanner;
public class ComparaLetras {
public ComparaLetras(){
//Constructor vacio
}
public static void main(String [] Argumentos){
System.out.println("Programa que compara letras");
String captura1 = "";
Scanner escaner1 = new Scanner(System.in);
String captura2 = "";
Scanner escaner2 = new Scanner(System.in);
captura1 = escaner1.nextLine();
captura2 = escaner2.nextLine();
int cadenaMenor=0, cadenaMayor=0, posicion=0;
//Comparamos la longitud de las cadenas
if(captura1.length()<captura2.length()){
cadenaMenor = captura1.length();
posicion = 1;
cadenaMayor = captura2.length();
}else if(captura1.length()>captura2.length()){
cadenaMenor = captura2.length();
posicion = 2;
cadenaMayor = captura1.length();
}
for(int contador = 0 ; contador < cadenaMayor; contador++){
if(contador < cadenaMenor){
System.out.println("Comparacion"+(contador+1)+" ¿igual en las dos letras? "
+captura1.substring(contador, contador+1).equals(captura2.substring(contador, contador+1)));
}else{
System.out.println("La palabra "+posicion+" no tiene letra "+(contador + 1));
}
}
}
}
-
Hola:
El ejercicio está muy bien! Si embargo para que funcione con todas las posibilidades habría que hacer un pequeño cambio.
Este cambio te va a permitir que cuando las dos palabras tengan las misma cantidad de letras siga funcionando (actualmente no lo hace).
El cambio es reemplazar el "else if" , por "else" ¿por qué? porque cuando las dos palabras tienen las misma cantidad de letras no entra ni al "if", ni al "else if", ya que no cumple ninguna de las dos condiciones y el programa se interrumpe.
Por lo tanto, si reemplazamos el "else if" por "else", si la cantidad de letras de las palabras es la misma entrará al else y hará las asignaciones correspondientes.
He aquí la modificación:
package ejemplo;
/*
programa que compara dos cadenas de texto letra por letra
*/
import java.util.Scanner;
public class ComparaLetras {
public ComparaLetras(){
//Constructor vacio
}
public static void main(String [] Argumentos){
System.out.println("Programa que compara letras");
String captura1 = "";
Scanner escaner1 = new Scanner(System.in);
String captura2 = "";
Scanner escaner2 = new Scanner(System.in);
captura1 = escaner1.nextLine();
captura2 = escaner2.nextLine();
int cadenaMenor=0, cadenaMayor=0, posicion=0;
//Comparamos la longitud de las cadenas
if(captura1.length()<captura2.length()){
cadenaMenor = captura1.length();
posicion = 1;
cadenaMayor = captura2.length();
}else{
cadenaMenor = captura2.length();
posicion = 2;
cadenaMayor = captura1.length();
}
for(int contador = 0 ; contador < cadenaMayor; contador++){
if(contador < cadenaMenor){
System.out.println("Comparacion"+(contador+1)+" ¿igual en las dos letras? "
+captura1.substring(contador, contador+1).equals(captura2.substring(contador, contador+1)));
}else{
System.out.println("La palabra "+posicion+" no tiene letra "+(contador + 1));
}
}
}
}
Analízalo y cualquier duda estamos aquí para ayudarte.