Autor Tema: IllegalArgumentException Java: impedir entrada de datos no válidos CU00681B  (Leído 8446 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas, aquí dejo mi solución al ejercicio. Un poco laborioso lo de averiguar como recoger enum del usuario, supongo que despues compensa que ya queda todo controlado en los valores que tu deseas se entre.

Sin más ahí va.

Clase Enum MarcaDeVehiculo

Código: [Seleccionar]

/**
 * Enumeration class MarcaDeVehiculo - Tipos de Vehiculos que podran recogerse
 *
 * @author Lorenzo31
 * @version 09-04-2015
 */
public enum MarcaDeVehiculo { FORD, TOYOTA, SUZUKI, RENAULT, SEAT}

Clase Vehiculo

Código: [Seleccionar]

/**
 * Write a description of class Vehiculo here.
 *
 * @author Lorenzo31
 * @version 09-04-2015
 */
public class Vehiculo {
   
    private String matricula;
    private MarcaDeVehiculo marcaCoche;
   
    public Vehiculo(){ matricula = ""; }
   
    /**
     * Método que establece el valor de matricula
     */
   
    public void setMatricula(String valorMatricula){ matricula = valorMatricula; }
   
     /**
     * Método que establece el valor de marcaCoche
     */
    public void setMarcaCoche(MarcaDeVehiculo valorMarcaCoche){ marcaCoche = valorMarcaCoche; }
   
    /**
     * Metodo que devuelve el valor de @return matricula
     */
   
    public String getMatricula (){ return matricula; }
   
   
    /**
     * Metodo que devuelve el valor de @return marcaCoche
     */
    public MarcaDeVehiculo getMarcaCoche (){ return marcaCoche; }
}

Clase GestorVehiculo

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

/**
 * @Author Lorenzo31
 * Esta clase recoge datos de matricula y modelo de un Vehiculo y muestra los resultados
 */

public class GestorVehiculo{
   
    public static void main (String [] args){
        Vehiculo coche = new Vehiculo();
        boolean modeloValido = false;

        System.out.println("Iniciamos el programa ");
       
        //Recoge matricula
        System.out.println("Introduce una matricula (String)");
        Scanner entrada = new Scanner(System.in);
        coche.setMatricula(entrada.nextLine() );
       
        //Recoge modelo
        System.out.println("Introduce un nuevo modelo ");
        do{
            try{
                coche.setMarcaCoche(MarcaDeVehiculo.valueOf(entrada.nextLine().toUpperCase()));
                modeloValido = true;
            }catch(IllegalArgumentException e){ System.out.println("Introduce un modelo válido: FORD, TOYOTA, SUZUKI, RENAULT, SEAT"); }
        }while (modeloValido == false);
       
        //Muestra matricula y modelo por pantalla
        System.out.println("Matricula: " + coche.getMatricula() + " Modelo " + coche.getMarcaCoche() );
       
        System.out.println("Final del programa");
    }

}
« Última modificación: 10 de Abril 2015, 00:39 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Lorenzo, ejercicio bien resuelto. Sobre lo laborioso de recoger enum del usuario, piensa que por ejemplo será más frecuente recogerlo a través de una lista desplegable tipo combobox donde el usuario solo tiene que elegir, no escribir. En este caso lo has resuelto bien para trabajarlo a través de teclado.

Saludos

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas Alex, gracias, si aún no me hago idea de las implicaciones en la parte gráfica pero por otros lenguajes entiendo el ahorro de control de tipologias.

Mil gracias por el comentario.

 

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