Autor Tema: ejercicio CU00681B tipos enumerados en Java  (Leído 2832 veces)

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
ejercicio CU00681B tipos enumerados en Java
« en: 13 de Octubre 2014, 22:48 »
Bueno Amigos Necesito ayuda
primero : El ejercicio me corre es en eclipse no se por que en bluj no funciona.

Segundo cuando mando a mostrar las lista de los vehiculos matriculados me muestra  es el ultimo vehiculo que agregue .

e tratado de resolver este problema pero no le consigo la vuelta.

Ejercicio
Citar
/*Crea una clase Vehiculo donde definas un tipo enumerado MarcaDeVehiculo cuyos valores
 * posibles serán FORD, TOYOTA, SUZUKI, RENAULT, SEAT. Establece como atributos de la
 * clase matricula (tipo String) y marca (tipo MarcaDeVehiculo) y crea los
 * métodos getters (para obtener) y setters (para establecer el valor) de los atributos. Escribe
 * un pequeño programa de prueba donde verifiques que los métodos funcionan correctamente. Puedes comprobar si
 * tu código es correcto consultando en los foros aprenderaprogramar.com.
   */

EntradaTeclado
Código: [Seleccionar]
import java.util.Scanner;
public class EntradaTeclado {

private String entradaTeclado;
public EntradaTeclado(){

entradaTeclado="";
pedirEntrada();
}
public void pedirEntrada()
{
Scanner escaneo=new Scanner(System.in);
entradaTeclado=escaneo.nextLine();
}
public String getEntrada(){return entradaTeclado;}
}




TestVehiculo
Código: [Seleccionar]
import java.util.*;
public class TestVehiculo
{
    public static void main(String [] args)
    {
        List<Vehiculo>listaVehiculo=new ArrayList<Vehiculo>();
    Vehiculo vehiculo=new Vehiculo();
        EntradaTeclado teclado=new EntradaTeclado();
        boolean volver=true;
        while(volver)
        {
            System.out.println(" Menu Vehiculo");
            System.out.println("1.- Elegir Vehiculo");
            System.out.println("2.- Mostrar Lista Vehiculo");
            teclado.pedirEntrada();
            Integer menu=Integer.valueOf(teclado.getEntrada());
            switch(menu)
            {
                case 1:
                {
               
                   boolean otroVehiculo=true;
                   while(otroVehiculo)
                   
                   {
                System.out.println(" Vehiculo a Elegir");
                    System.out.println("1-FORD °° 2-TOYOTA °° 3-SUZUKI °° 4-RENAULT °° 5-SEAT. ");
                    teclado.pedirEntrada();
                   String elegir=teclado.getEntrada();
                    vehiculo.elegirVehiculo(elegir);
                   
                    System.out.println("Escriba el Nombre de la Matricula");
                    teclado.pedirEntrada();
                    vehiculo.setMatricula(teclado.getEntrada());
                    listaVehiculo.add(vehiculo);
                   
                    System.out.println("Deceas Ingresar otro vehiculo s/n :");
                    teclado.pedirEntrada();
                    if(teclado.getEntrada().equals("s"))
                    {
                    otroVehiculo=true;
                    }else{otroVehiculo=false;}
                   }
                    break;

                }
                case 2:
                {               
                Iterator<Vehiculo> it=listaVehiculo.iterator();
                while(it.hasNext())
                {
                vehiculo=it.next();
                System.out.println("Marca :"+vehiculo.getMarca()+" "+"Matricula :"+vehiculo.getMatricula());
                }
                }
            }
            System.out.println(" Deceas Volcer al Menu Principal s / n");
            teclado.pedirEntrada();
            if(teclado.getEntrada().equals("s"))
            {
                volver=true;
            }else { volver=false;}

        }
        System.out.println("Adios");

    }
}
Vehiculo
Código: [Seleccionar]
public class Vehiculo
{
    enum MarcaDeVehiculo{FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
   
    private String matricula;
    private MarcaDeVehiculo marca;
   
    public Vehiculo()
    {
       matricula="";
       marca=null;
    }
    public void setMarca(MarcaDeVehiculo marca)
    {
        this.marca=marca;
    }
    public void setMatricula(String matricula)
    {
        this.matricula=matricula;
    }
    public MarcaDeVehiculo getMarca(){return marca;}
    public String getMatricula(){return matricula;}
   public void elegirVehiculo(String menu)
    {
       
        switch(menu)
        {
           
            case "1":
            {
                setMarca(MarcaDeVehiculo.FORD);
                break;           
            }
            case "2":
            {
                setMarca(MarcaDeVehiculo.TOYOTA);
                break;
            }
            case "3":
            {
                setMarca(MarcaDeVehiculo.SUZUKI);
                break;
            }
            case "4":
            {
                setMarca(MarcaDeVehiculo.RENAULT);
                break;
            }
            case "5":
            {
                setMarca(MarcaDeVehiculo.SEAT);
                break;
            }
            default :break;
       
        }
    }
 }



« Última modificación: 15 de Octubre 2014, 09:04 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:CU00681B
« Respuesta #1 en: 14 de Octubre 2014, 19:25 »
Hola momo
Si tu código tiene dos pequeñas deficiencias

1ª Al principio del main y antes de presentar ningún mensaje declaras e inicializa el objeto teclado de tipo EntradaTeclado.
Verás que el constructor de esta clase llama a su método pedirEntrada()
Esto hace que el programa espere una entrada de teclado con un ENTER  al final. Hasta que no introduzcas ese ENTER no se ejecutará el resto del código. Además como no has presentado ningún mensaje por consola, si esta no está abierta, tendrás que llamarla por el menú de BlueJ.

2ª Si introduces o matriculas más de un vehículo, en el listado de vehículos, se repetirá siemptre el último vehículo introducido.
Esto ocurre porque durante todo el tiempo estás trabajando con el mismo objeto vehiculo (siempre la misma dirección de memoria), lo que estás haciendo es cambiar la marca y matrícula del mismo vehículo.
Para solucionarlo, debes crear un objeto de tipo vehiculo nuevo (distinto) cada vez que eliges otro vehículo.

Te propongo que rediseñes el código para solucionar estas dos deficiencias.

Nota: Un método útil a la hora de detectar las pulsaciones de teclado es una versión del 'equals()' llamada
equalsIgnoreCase("..texto..")
ver siguiente enlace
https://www.aprenderaprogramar.com/foros/index.php?topic=1302.msg7773#msg7773

Eso es todo. 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".