Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 09 de Abril 2015, 13:00

Título: IllegalArgumentException Java: impedir entrada de datos no válidos CU00681B
Publicado por: Lorenzo31 en 09 de Abril 2015, 13:00
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");
    }

}
Título: Re:IllegalArgumentException Java: impedir entrada de datos no válidos CU00681B
Publicado por: Alex Rodríguez en 10 de Abril 2015, 00:40
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
Título: Re:IllegalArgumentException Java: impedir entrada de datos no válidos CU00681B
Publicado por: Lorenzo31 en 10 de Abril 2015, 00:53
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.