Autor Tema: CU00662B Aprender a hacer un buen diseño orientado a objetos  (Leído 3409 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenas noches

El enunciado del capitulo 62 es este:

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

Código: [Seleccionar]
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:



Gracias por el curso!

« Última modificación: 08 de Abril 2015, 01:07 por Alex Rodríguez »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Ejercicio (CU00662B), El método equals en Java.
« Respuesta #1 en: 06 de Abril 2015, 23:21 »
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

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Ejercicio (CU00662B), El método equals en Java.
« Respuesta #2 en: 07 de Abril 2015, 16:21 »
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!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".