Autor Tema: Java ¿cómo dividir el código en clases? ¿cómo poner nombre de clases? CU00662B  (Leído 8115 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola, este es mi primer post, hasta ahora no me había surgido ninguna duda, pero este ejercicio mas que tener dudas fue que se me ocurrieron muchas formas de resolverlo, aquí pongo la mas corta de las que se me ocurrieron.

Código: [Seleccionar]
import java.util.Scanner;
public class Java62Ejercicio {
    public static void main (String [] args) {
        System.out.println ("Introduce una palabra 1:");
        String palabra1 = "";
        Scanner entradaEscaner1 = new Scanner (System.in);
        palabra1 = entradaEscaner1.nextLine ();
        System.out.println ("Introduce una palabra 2:");
        String palabra2 = "";
        Scanner entradaEscaner2 = new Scanner (System.in);
        palabra2 = entradaEscaner2.nextLine ();
        int i=0;
        if (palabra1.length()>=palabra2.length()) {
            while (i<palabra2.length()) {
                if (palabra1.substring(i, i+1).equals(palabra2.substring(i, i+1))){
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? True");
                } else {
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? False");
                }
                i++;
            }
            while (i<palabra1.length()) {
               System.out.println("La palabra 2 no tiene letra " + (i+1) + ".");
               i++;
            }
        } else if (palabra2.length()>=palabra1.length()) {
            i=0;
            while (i<palabra1.length()) {
                if (palabra1.substring(i, i+1).equals(palabra2.substring(i, i+1))){
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? True");
                } else {
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? False");
                }
                i++;
            }
            while (i<palabra2.length()) {
               System.out.println("La palabra 1 no tiene letra " + (i+1) + ".");
               i++;
            }
        }
    }

también estuve intentando la posibilidad de hacerlo en dos clases, pero no fui capaz de sacar nada en claro.
« Última modificación: 01 de Junio 2015, 08:52 por César Krall »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #1 en: 29 de Mayo 2015, 17:55 »
yo lo resolví de otra forma como nos enseña en el tutorial porque es orientado a objeto no es extructurada te envio lo código aunque en mi código le falta cambiar los nombre nomas para que diga mejor lo que realiza
calse para recoger la letra
Código: [Seleccionar]
package ejercicioscu00662b;

public class VerificarLetra {

    public void comprobarLetra(String palabra_1, String palabra_2) {
        int limiteSup;
        int limiteInf;
        int text;

        if (palabra_1.length() > palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 2;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 1;
            limiteSup = palabra_1.length();
        }
        for (int i = 0; i < limiteSup; i++) {
            if (i < limiteInf) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
            }
        }

    }
}
clase para crear el teclado y buscar palabra
Código: [Seleccionar]
package ejercicioscu00662b;

import java.util.Scanner;

public class Teclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public Teclado() {
        entradaTeclado = "";
    }

    public String buscarPalabra() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }

}
clase principal main
Código: [Seleccionar]
package ejercicioscu00662b;

public class EjerciciosCu00662B {

    public static void main(String[] args) {
        Teclado teclado = new Teclado();
        VerificarLetra verificar = new VerificarLetra();

        System.out.println("Introduce la primera palabra");
        String palabra_1 = teclado.buscarPalabra();
        System.out.println("Introduce la segunda palabra");
        String palabra_2 = teclado.buscarPalabra();

        verificar.comprobarLetra(palabra_1, palabra_2);

    }

}

Para tener una idea y para modificar tu código

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #2 en: 29 de Mayo 2015, 18:08 »
Esta sugerencia me dieron a mi código para modificar que todavía no hice

Y por último te haría una sugerencia: a la clase Teclado yo la renombraría por un nombre más significativo a lo que hace. La clase -tal como está planteado tu código- es un GestionadorDeEntradasTeclado. Creo que ese nombre es más apropiado para esa clase (o algo similar).
Lo mismo que a su método buscarPalabra() también lo renombraría por algo que sea más alusivo, por ejemplo podría bien llamarse recogerPalalabra(), que verdaderamente es lo que hace.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #3 en: 29 de Mayo 2015, 19:29 »
gracias por el aporte Ramón, ahora me pondré con el nuevo código.

sobre tu código, cuando lo ejecuto, no hace nada en la parte que debería de decir

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

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #4 en: 29 de Mayo 2015, 20:15 »
hacele esta modificacion en la clase para verificarLetra
Código: [Seleccionar]
package ejercicioscu00662b;

public class VerificarLetra {

    public void comprobarLetra(String palabra_1, String palabra_2) {
        int limiteSup;
        int limiteInf;
        int text;

        if (palabra_1.length() < palabra_2.length()) {
            limiteInf = palabra_1.length();
            text = 1;
            limiteSup = palabra_2.length();
        } else {
            limiteInf = palabra_2.length();
            text = 2;
            limiteSup = palabra_1.length();
        }
        for (int i = 0; i < limiteSup; i++) {
            if (i < limiteInf) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
            }
        }

    }

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #5 en: 29 de Mayo 2015, 20:18 »
Y el código funciona bien le puse mal nomas la condición y te pase lo que estaba mal cuando imprime dice asi

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #6 en: 29 de Mayo 2015, 20:19 »
Tenes que crear 3 clase aunque podes hacer con 2

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Java Revisión Ejercicio (CU00662B)
« Respuesta #7 en: 31 de Mayo 2015, 02:36 »
Bueno, siguiendo los consejos que me diste, finalmente hice lo siguiente:
acepto cualquier tipo de consejo y también me gustaría saber, ya que se le da mucha importancia a los nombres que utilizamos, es si los nombres de variables, método, etc. que utilizo son apropiados o si por el contrario pueden llevar al error.

el main

Código: [Seleccionar]
public class IgualdadEntrePalabras{
    public static void main (String [] args) {
        String palabra1 = "";
        String palabra2 = "";
        EntradaDeTeclado getPalabra = new EntradaDeTeclado();
        ComparaPalabras palabras = new ComparaPalabras();
        System.out.println ("Introduce una palabra 1:");
        palabra1 = getPalabra.getPalabra();
        System.out.println ("Introduce una palabra 2:");
        palabra2 = getPalabra.getPalabra();
        palabras.comprobrarIgualdad(palabra1, palabra2);
         
    }
   
}

una clase con getter donde incluyo el Scanner.

Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado{
        Scanner entradaEscaner = new Scanner(System.in);
        private String entradaTeclado;
       
        public EntradaDeTeclado(){
            entradaTeclado ="";
        }
       
        public String getPalabra() {
            entradaTeclado = entradaEscaner.nextLine();
            return entradaTeclado;
        }
}

y otra clase mas, donde realizo la comparacion de las palabras.

Código: [Seleccionar]
public class ComparaPalabras {
    public void comprobrarIgualdad(String palabra1, String palabra2) {
        int i = 0;
        if (palabra1.length()>=palabra2.length()) {
            while (i<palabra2.length()) {
                if (palabra1.substring(i, i+1).equals(palabra2.substring(i, i+1))){
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? True");
                } else {
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? False");
                }
                i++;
            }
            while (i<palabra1.length()) {
               System.out.println("La palabra 2 no tiene letra " + (i+1) + ".");
               i++;
            }
        } else if (palabra2.length()>=palabra1.length()) {
            i=0;
            while (i<palabra1.length()) {
                if (palabra1.substring(i, i+1).equals(palabra2.substring(i, i+1))){
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? True");
                } else {
                    System.out.println("¿Letra " + (i+1) + " igual en las dos palabras? False");
                }
                i++;
            }
            while (i<palabra2.length()) {
               System.out.println("La palabra 1 no tiene letra " + (i+1) + ".");
               i++;
            }
        }
    }
}
« Última modificación: 31 de Mayo 2015, 02:40 por pedro,, »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
No va a tener error si no le llama de forma correcta a los métodos constructores y otros
pero por la estandarizacion de java es la forma correcta de programar en java.

En Java existen ciertas reglas de codificación que son comúnmente utilizadas por los programadores.
Conviene conocer y seguir estas reglas.
• Los nombre de las clases deben empezar por mayúscula.
• Los atributos y méodos de las clases deben empezar por minúsculas y si están formadas por varias
palabras, se escriben sin espacios y la primera letra de cada palabra en mayúscula.
• Las instancias de las clases siguen la misma recomendación que los métodos y atributos.
• Las constantes se escriben en mayúsculas.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Funciona bien tu código hace lo que pide el ejercicios es un poco largo el algoritmo pero anda ademas ya esta mas programado orientado a objeto no como el otro que era estructurado

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
muchas gracias otra vez, lo tendré en cuenta.

 

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