Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Dan_SB en 05 de Abril 2015, 03:09
-
Buenas noches
El enunciado del capitulo 62 es este:
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.
Estuvo medio complicado jajaja pero ahi le di!!, lo hice todo en el main como dice:
package Comparacion;
import java.util.Scanner;
public class Compara {
static Scanner in = new Scanner(System.in);
static String palabra1, palabra2;
static int mayor, menor, aux;
public static void main(String[]args){
System.out.println("Ingrese la primera palabra: ");
palabra1 = in.next();
System.out.println("Ingrese la segunda palabra: ");
palabra2 = in.next();
if (palabra1.length()> palabra2.length()){
mayor = palabra1.length();
menor = palabra2.length();
aux = 2;
}
else{
mayor = palabra2.length();
menor = palabra1.length();
aux = 1;
}
for(int i = 0, j = 1; i < mayor; i++, j++){
System.out.print("¿Letra " + j + " es igual en las dos palabras?");
if (i < menor){
System.out.println(" " + palabra1.substring(i, i+1).equals(palabra2.substring(i, i+1)));
}
else
System.out.println(" La palabra " + aux + " no tiene letra " + i);
}
}
}
Resultado:
(http://i.imgur.com/yuDFVUS.png)
Gracias por el curso!
-
Hola Dan, ejercicio bien resuelto. Ya que vas bien y se ve que tienes interés te planteo cuestiones para que tengas en cuenta.
Has declarado variables de clase:
static Scanner in = new Scanner(System.in);
static String palabra1, palabra2;
static int mayor, menor, aux;
Esto puede aceptarse, pero no parece un planteamiento realmente bueno. ¿Para qué queremos definir variables de clase pudiendo hacerlo con variables temporales propias del método main?
No es necesario puesto que el ejercicio está bien resuelto, pero te voy a plantear algo que sería útil para trabajar como lo haría un programador en programación orientada a objetos (realmente a esta escala de pequeños ejercicios es más difícil de plantear por la poca extensión de código, pero se puede hacer). Esto ya sería más de lo que pide el ejercicio realmente.
Planteamiento alternativo:
Definimos una clase denominada ComparadorPalabras. Esta clase no tiene atributos sino un único método, denominado compararPalabras (String palabra1, String palabra2), que se encarga de realizar la lógica de comparación y mostrar los mensajes oportunos por pantalla.
Definimos otra clase denominada GestorEntradas que básicamente permite pedir un dato.
En la clase con el main creamos un objeto GestorEntradas y lo invocamos cuando sea necesario para pedir las palabras. Por otro lado creamos un objeto ComparadorPalabras e invocamos su método pasándole las dos palabras.
Planteamiento doblemente alternativo: definir el método para comparar palabras como String compararPalabras (String palabra1, String palabra2) de modo que el método no se encarga de mostrar nada por pantalla, simplemente lo que hace es devolver un String con el resultado de la comparación. Quien se encargará de mostrar ese String por pantalla será el método main. Por ejemplo un String podría ser este:
"Primera palabra: calzo
Segunda palabra: cabeza
¿Letra 1 es igual en las dos palabras? true
¿Letra 2 es igual en las dos palabras? true
¿Letra 3 es igual en las dos palabras? false
¿Letra 4 es igual en las dos palabras? false
¿Letra 5 es igual en las dos palabras? false
¿Letra 6 es igual en las dos palabras? La palabra 1 no tiene letra 5
"
Es un String largo, pero es un String.
El resultado con cualquier planteamiento de estos no varía respecto al que has obtenido tú, pero si analizas los planteamientos extraerás cosas interesantes de ellos.
Saludos
-
Hola Mario!!
Gracias a ustedes de antemano por todo esto, no sabia muchísimas cosas sobre java... este curso me ha ayudado bastante. En cuanto las variables si, tienes razón.. no es correcto declararlas ahí... disculpas por eso!
Y si, me pondré a analizar esas soluciones alternas. Muy probable que saque algo nuevo que aprender de eso :)
Gracias por tus correcciones!
Saludos!