Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rogergcc en 27 de Abril 2015, 02:15
-
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.
Al principio lo estaba haciendo de otra manera pero decidí por la siguiente, bueno me guie del ejercicio anterior:
Clase entradaTexto
class entradaTexto {
private String textoIngresado;
//constructor
public entradaTexto(String textoIngresado) {
this.textoIngresado = textoIngresado;
}
//constructor por defecto
public entradaTexto() {
this.textoIngresado="";
obtenerTexto();
}
//setters
public String getTextoIngresado() {
return textoIngresado;
}
//getters
public void setTextoIngresado(String textoIngresado) {
this.textoIngresado = textoIngresado;
}
public void obtenerTexto(){
Scanner sc = new Scanner(System.in);
String textoIngresado = sc.next();
}
}
Main
public static void main(String[] args) {
System.out.println ("Por favor introduzca la entrada 1:");
entradaTexto texto1 = new entradaTexto();
System.out.println(texto1.getTextoIngresado());
System.out.println ("Por favor introduzca la entrada 2:");
entradaTexto texto2 = new entradaTexto();
System.out.println(texto2.getTextoIngresado());
int n;
String texto_1= texto1.getTextoIngresado();
System.out.println ("texto_1 : "+ texto_1); // aqui no me imprime el texto_1 porque en la linea anterior no lo asigna
String texto_2= texto2.getTextoIngresado();
boolean comparacion ;
if (texto_1.length() > texto_2.length()) {
n = texto_1.length();
}
else
{ n = texto_2.length();}
for (int i = 0; i < n; i++) {
System.out.println("Letra "+(i+1)+" igual en las dos palabras");
if (texto_1.substring(i, i+1).equals(texto_2.substring(i, i+1))) {
comparacion = true;
System.out.println( comparacion);
}
else
{comparacion = false;
System.out.println( comparacion);}
}
}
En la main no se porque no puedo asignar un String Texto_1 = texto1.getTextoIngresado(); y por consiguiente el codigo apartir de ahi no se ejecuta
debe ser por variables locales o algo asi, no se.
Y si la lógica esta bien, si se puede mejorar o acortarla y si es mejor tener es lógica en un método en la clase. Gracias.
ahh y si falta codigo para cuando una palabra es mas grande q la otra La palabra 2 no tiene letra 4
-
si hubiera hecho todo en el main quedaría así :
public static void main(String[] args) {
String p1,p2;
Scanner sc = new Scanner(System.in);
System.out.print("Ingrese la 1era Palabra .");p1 = sc.next();
System.out.print("Ingrese la 2da Palabra .");p2 = sc.next();
int mayor,menor,aux;
if (p1.length() > p2.length()) {
mayor=p1.length();
menor=p2.length();
aux = 2;
}
else
{
mayor=p2.length();
menor=p1.length();
aux = 1;
}
for (int i = 0; i < mayor; i++) {
System.out.print("¿ Letra "+(i+1)+" igual en las dos palabras ? ");
if (i<menor)
System.out.println(" "+p1.substring(i, i+1).equals(p2.substring(i, i+1)));
else
System.out.println(" La palabra " + aux + " no tiene letra " + i);
}
}y si es necesario inicializar string "" e int a 0 ?