Autor Tema: ¿crear un nuevo objeto Scanner para cada entrada del usuario? CU00681B Java  (Leído 2716 veces)

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Hola de nuevo.

Dejo aquí mi respuesta al ejercicio propuesto en la entrega CU00681B de Aprender programación Java desde cero.

Clase Vehiculo:
Código: [Seleccionar]
public class Vehiculo {
    enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
    private String matricula;
    private MarcaDeVehiculo marca;
   
    public Vehiculo () {
        matricula = "desconocida";
        marca = MarcaDeVehiculo.SUZUKI;
    }
   
    public void setMatricula (String valorMatricula) {
        matricula= valorMatricula;
    }

    public void setMarca (String valorMarca) {
        String marcaCoche = valorMarca;
        if (marcaCoche.equalsIgnoreCase("FORD")) {
            marca = MarcaDeVehiculo.FORD;
        } else if (marcaCoche.equalsIgnoreCase ("TOYOTA")) {
            marca = MarcaDeVehiculo.TOYOTA;
        } else if (marcaCoche.equalsIgnoreCase ("SUZUKI")) {
        } else if (marcaCoche.equalsIgnoreCase ("RENAULT")) {
            marca = MarcaDeVehiculo.RENAULT;
        } else if (marcaCoche.equalsIgnoreCase ("SEAT")) {
            marca = MarcaDeVehiculo.SEAT;
        }     
    }

    public String getMatricula () { return matricula; }

    public String getMarca () {
        return marca.toString().toLowerCase();
    }
}

Clase TestVehiculo:
Código: [Seleccionar]
import java.util.Scanner;
/**
 * Clase para comprobar que los métodos de la clase Vehiculo funcionan correctamente. *
 * @author Erik Escriche
 */
public class TestVehiculo {
    public static void main (String [] args) {
        Vehiculo coche = new Vehiculo ();
        System.out.println ("Datos por defecto: matrícula " + coche.getMatricula () + " y marca " + coche.getMarca() + ".");
        System.out.println ("¿Cuál es la matrícula del coche?");
        Scanner entrada1 = new Scanner (System.in);
        String respuesta = entrada1.nextLine();
        coche.setMatricula(respuesta);
        System.out.println ("Matrícula actualizada a " + coche.getMatricula() + ".");
        System.out.println ("¿Cuál es la marca del coche?");
        Scanner entrada2 = new Scanner (System.in);
        String respuesta2 = entrada2.nextLine();
        while (!respuesta2.equalsIgnoreCase("FORD")&&!respuesta2.equalsIgnoreCase("SUZUKI")&&!respuesta2.equalsIgnoreCase("TOYOTA")&&!respuesta2.equalsIgnoreCase("RENAULT")&&
        !respuesta2.equalsIgnoreCase("SEAT")) { System.out.println ("La marca introducida no es una marca válida. Introduzca una marca de las siguientes: FORD, TOYOTA, SUZUKI, RENAULT, SEAT.");
            Scanner otraEntrada = new Scanner (System.in);
            respuesta2 = otraEntrada.nextLine();
        }
        coche.setMarca (respuesta2);
        System.out.println ("Marca actualizada a " + coche.getMarca() + ".");
    }
}

¡Un saludo!
« Última modificación: 03 de Diciembre 2016, 20:13 por Alex Rodríguez »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Ejercicio de tipos enumerados CU00681B Java
« Respuesta #1 en: 24 de Noviembre 2016, 05:30 »
Buenos días.

El ejercicio es correcto.
Lo único que cambiaría es el uso de las variables para la respuesta.Yo lo haría asi:
Código: [Seleccionar]
import java.util.Scanner;
/**
 * Clase para comprobar que los métodos de la clase Vehiculo funcionan correctamente. *
 * @author Erik Escriche
 */
public class TestVehiculo {
    public static void main (String [] args) {
        Vehiculo coche = new Vehiculo ();
        Scanner entrada = new Scanner (System.in);
        String respuesta;
        System.out.println ("Datos por defecto: matrícula " + coche.getMatricula () + " y marca " + coche.getMarca() + ".");

        System.out.println ("¿Cuál es la matrícula del coche?");       
        respuesta = entrada.nextLine();
        coche.setMatricula(respuesta);
        System.out.println ("Matrícula actualizada a " + coche.getMatricula() + ".");

        System.out.println ("¿Cuál es la marca del coche?");
        respuesta= entrada.nextLine();
        while (!respuesta.equalsIgnoreCase("FORD")&&!respuesta.equalsIgnoreCase("SUZUKI")&&!respuesta.equalsIgnoreCase("TOYOTA")&&!respuesta.equalsIgnoreCase("RENAULT")&&
        !respuesta.equalsIgnoreCase("SEAT")) { System.out.println ("La marca introducida no es una marca válida. Introduzca una marca de las siguientes: FORD, TOYOTA, SUZUKI, RENAULT, SEAT.");
            respuesta = entrada.nextLine();
        }
        coche.setMarca (respuesta);
        System.out.println ("Marca actualizada a " + coche.getMarca() + ".");
    }
}

Un saludo

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Re:Ejercicio de tipos enumerados CU00681B Java
« Respuesta #2 en: 24 de Noviembre 2016, 10:12 »
Muchas gracias, ESOJ. No sé por qué, pero estaba convencido de que había que crear un nuevo objeto Scanner para cada entrada del usuario. Queda mucho más limpio de la forma en que lo has escrito.

¡Saludos!

 

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