Hola,
os dejo para que comprobeis mi respuesta a este ejercicio.
He utilizado la clase vehiculo y la clase EntradaDeTeclado, de otros ejercicios.
public class Vehiculo
{
public enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
private String matricula;
private MarcaDeVehiculo marca;
public Vehiculo(){
}
public void setMatricula(String matricula){
this.matricula=matricula;
}
public String getMatricula(){
return this.matricula;
}
public void setMarca(MarcaDeVehiculo marca){
this.marca=marca;
}
public MarcaDeVehiculo getMarca(){
return marca;
}
public boolean comprobarMarca(){
boolean done=true;
marca=MarcaDeVehiculo.FORD;//se crea el objeto MarcaDeVehiculo
EntradaDeTeclado entrada1=new EntradaDeTeclado();//se introduce una marca de coche
for(MarcaDeVehiculo aux:marca.values()){
if(entrada1.getEntrada().toString().equals(aux.toString().toLowerCase())){
this.marca=aux; //La marca introducida se asigna a la variable marca.
return done;
}
}
return done=false;
}
}
import java.util.Scanner;
public class EntradaDeTeclado
{
private String entradaTeclado; //variable de instancia(campo) de ´la clase
public EntradaDeTeclado(){ //constructor
entradaTeclado=""; //inicializamos la instancia de la clase
pedirEntrada(); // Esto es una llamada a un método interno. Al crear un objeto automaticamente, ejecutamos el metodo
}
public void pedirEntrada(){ //metodo de la clase
Scanner entradaEscaner=new Scanner(System.in);
entradaTeclado=entradaEscaner.nextLine();
}
public String getEntrada(){
return entradaTeclado;
}
}
public class TestTipoEnum
{
public static void main(String[] Args){
Vehiculo.MarcaDeVehiculo marca=Vehiculo.MarcaDeVehiculo.SEAT;
//marca=MarcaDeVehiculo.SEAT;//¿siempre hay que declarar el tipo dandole un valor?
Vehiculo coche=new Vehiculo();
System.out.println("Iniciamos el test\nIntroduce una de estas marca de coche");
for(Vehiculo.MarcaDeVehiculo aux:marca.values()){
System.out.println(aux.toString() + "\t");
}
while(!coche.comprobarMarca()){ //se comprueba que la marca de coche sea correcta
System.out.println("la marca introducida no es correcta, vuelve a intentarlo");
}
System.out.println("Ahora introduce una matricula");
EntradaDeTeclado entrada2=new EntradaDeTeclado();
coche.setMatricula(entrada2.getEntrada());
System.out.println("la marca que has elegido es " + coche.getMarca().toString() + " y su matricula es " + coche.getMatricula() );
}
}
Ahora unas preguntas:
- ¿siempre que se cree un tipo enumerado hay que asignarle un valor de los que posee el enumerado?
- ¿porque, a pesar de utilizar \t para escribir la lista de marcas del enumerado, las marcas salen una debajo de otra y no una al lado de la otra, como esperaba?
Muchas gracias por vuestra ayuda y consejos.
Un saludo.