Autor Tema: Una entrada de teclado en Java como objeto con campos y métodos. (CU00662B)  (Leído 3057 veces)

macarena2405

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
este me costó mucho hacer tuve que mirar otros   :P
 

entradaPorTeclado

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

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


Comparacion
Código: [Seleccionar]
public class TestLetraALetra

    private int i;
    private int n;
    private String palabraCorta;
    private GestionadorEntradasTeclado miTeclado;
   
        public static void main (String [] args){
            int limiteInf;
            int limiteSup;
            int palabra;
   
         System.out.println("Empezamos el programa");
            GestionadorEntradasTeclado miTeclado =new GestionadorEntradasTeclado();
            System.out.println("Introduce la primera cadena");
            String entrada_1 = miTeclado.recogerPalabra();
            System.out.println("Introduce la segunda cadena");
            String entrada_2 = miTeclado.recogerPalabra();
       if(entrada_1.length()<entrada_2.length()){
           limiteInf=entrada_1.length();
           palabra = 1;
           limiteSup = entrada_2.length();
        }
        else{
            limiteInf=entrada_2.length();
            palabra = 2;
            limiteSup = entrada_1.length();
        }
           
           for(int i=0;i<limiteSup;i++){
            if(i<limiteInf){
                System.out.println("¿Letra "+(i+1)+" igual en las dos palabras? " + (entrada_1.substring(i,i+1).equals(entrada_2.substring(i,i+1))));
            }
            else{
                System.out.println("La palabra "+palabra+" no tiene letra "+(i+1));
            }
        }
   
        }
    }

« Última modificación: 03 de Junio 2015, 09:05 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Hola Macarena!

Creo que has equivocado el número de ejercicio publicado, ya que la lección CU00661B no tiene ejercicio propuesto, en cambio en la lección CU00662B se propone un ejercicio que casualmente coincide con la solución que das tu aquí ! jeje Así que hagamos de cuenta que se trata del ejercicio CU00662B lo que quisiste resolver   ;D.

He estado revisando tu código y está muy bien, funciona y realiza lo que pide la consigna del ejercicio (662).
Destaco tu resolución del problema utilizando dos clases, y los nombres elegidos para nombrar las clases.

También he de hacerte unas observaciones que creo son de importancia.
Fíjate en lo siguiente: la clase TestLetraALetra solo tiene un solo método, el método main. Por lo tanto no sería necesario declarar campos de instancia. En su lugar deberíamos declarar solo campos dentro del método main, ya que es únicamente este método quien los usará.

Por lo tanto esta clase TestLetraALetra quedaría de la siguiente manera:

Código: [Seleccionar]
public class TestLetraALetra
{
 
   
        public static void main (String [] args){
            int limiteInf;
            int limiteSup;
            int palabra;
            GestionadorEntradasTeclado miTeclado =new GestionadorEntradasTeclado();
           
            System.out.println("Introduce la primera cadena");
            String entrada_1 = miTeclado.recogerPalabra();
            System.out.println("Introduce la segunda cadena");
            String entrada_2 = miTeclado.recogerPalabra();
       if(entrada_1.length()<entrada_2.length()){
           limiteInf=entrada_1.length();
           palabra = 1;
           limiteSup = entrada_2.length();
        }
        else{
            limiteInf=entrada_2.length();
            palabra = 2;
            limiteSup = entrada_1.length();
        }
           
           for(int i=0;i<limiteSup;i++){
            if(i<limiteInf){
                System.out.println("¿Letra "+(i+1)+" igual en las dos palabras? " + (entrada_1.substring(i,i+1).equals(entrada_2.substring(i,i+1))));
            }
            else{
                System.out.println("La palabra "+palabra+" no tiene letra "+(i+1));
            }
        }
   
        }
    }

Observa también las siguientes modificaciones adicionales hechas:

Anteriormente habías declarado un campo de clase GestionadorEntradasTeclado miTeclado el cuál tiene como ámbito toda la clase. Además habías también declarado un campo en el método main también llamado GestionadorEntradasTeclado miTeclado.
Fíjate que en el nuevo código, el que es campo de instancia ya no existe más, ya que el único campo miTeclado que se usará es el que corresponde al método main.

Otras dos campos de instancia que eliminamos fueron: int i, int n, y String palabraCorta.
El atributo int i, no hace falta declararlo tampoco dentro del método main, ya que se define dentro del ciclo for cuando hacemos:

Código: [Seleccionar]
for(int i=0;i<limiteSup;i++){
Al atributo int n, no le veo utilidad ya que no se utiliza en ninguna parte del código. Lo mismo sucede con el atributo String palabraCorta. Estos dos atributos fueron eliminados de la clase.

Seguramente todas estos atributos "de más" habrán ido quedando cuando programabas e ibas haciendo distintas pruebas e intentos.
Siempre es buena práctica ir eliminando las cosas que nos han servido de prueba cuando programamos, pero que no formarán parte del código final, de manera tal que no queden líneas obsoletas, atributos sin uso, objetos que no tienen sentido, etc etc.

Saludos! A seguir adelante.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Corregido CU00661B por CU00662B Gracias RaGa!

 

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