Autor Tema: Java. Ejercicio Java tipos enumerados recibir parámetros de tipo enum CU00681B  (Leído 4285 veces)

Pandemia

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 255
    • Ver Perfil
Buenas noches ahí va mi propuesta del ejercicio CU00681B del manual de fundamentos de programación Java.....

Citar
EJERCICIO

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.


Código: [Seleccionar]
/**
 * Ejercicio CU00681B del curso de java desde cero de aprenderaprogramar.com
 *
 * Clase 1: objeto TipoEnumerado con un tipo enumerado con varias marcas de vehículos
 * Esta clase define un objeto TipoEnumerado con varias marcas de vehículos.
 * @author  Pandemia
 * @version  05/10/2016/A
 */
public class Vehiculo
{
    enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};

    //Inicialización de laS variables en este caso las dos de tipo String
    private String matricula; 
    private String marca;

    /**
     * CONSTRUCTOR
     * @param matricula define las matriculas de los vehículos de las marcas del tipo enumerado MarcaDeVehiculo.
     * @param marca define la marca de los vehículos del tipo enumerado MarcaDeVehiculo.
     */
    public Vehiculo (){
        matricula = "";
        marca = null;
    }//Cierre del constructor

    /**
     * Método para establecer la matricula del vehículo
     * @param valorMatricula el parámetro valorMatricula define el valor que contendrá la matricula del vehículo
     */
    public void setMatricula (String valorMatricula){
        matricula = valorMatricula;
    }//Cierre del método

    /**
     * Método para establecer la marca del vehículo
     * @param valorMarca el parámetro valorMarca define el valor que contendrá la matricula del vehículo
     */
    public void setMarca (MarcaDeVehiculo valorMarca) {
        marca = valorMarca.toString();
    } //Cierre del método

    /**
     * Método para obtener la matrícula del vehículo
     * @return La matrícula del vehículo
     */
    public String getMatricula(){ return matricula; }

    /**
     * Método para para obtener la Marca del Vehículo
     * @return La Marca del Vehículo
     */
    public String getMarca(){ return marca.toString();}


Código de prueba

Código: [Seleccionar]
/**
 * Ejercicio CU00681B del curso de java desde cero de aprenderaprogramar.com
 *
 * Clase2.Test para crear objeto vehículo con un tipo enumerado con varias marcas
 *
 * @author Pamdemia
 * @version 07/10/2016/A
 * Esta clase define un método test para provar el objeto vehículo
 */
import java.util.Scanner; //Importamos la clase Scanner para introducir datos por teclado.
public class TestVehiculoEnum
{
    public static void main (String [ ] Args) {
        // Introducimos los campos de la clase y los inicializamos.
        String entradaTeclado = ""; //variable para contener la entrada por teclado
        boolean marcaOk = false; //variable que controla si es correcta la marca introducida

        //creo un objeto de la clase Vehiculo
        Vehiculo vehiculoTest = new Vehiculo();

        //Creo el objeto Scanner
        Scanner sc = new Scanner (System.in);

        //Limpiamos la pantalla de la consola
        System.out.println("\f");
        //mostramos mensaje de inicio
        System.out.println("Bienvenidos al programa, comenzamos con la creación del objeto de un vehículo.");

        //Se solicita la matricula del vehículo
        System.out.println("Introduzca la matrícula del vehículo: ");
        //Scanner para la entrada de teclado
        entradaTeclado = sc.nextLine();

        //llamada al método de la clase Vehiculo para coger el valor de la matricula
        vehiculoTest.setMatricula(entradaTeclado);

        // Bucle que se repite miesntras marcaOK = false. es decir, mientras no se introduzca una marca correcta
        do
        {
            //solicitamos la marca del vehículo
            System.out.print("Introduzca una de las siguientes Marcas de Vehiculo (Ford, Toyota, Suzuki, Renault, Seat): ");
            //Scanner para la entrada de teclado
            entradaTeclado = sc.nextLine();
           
            // Comprobación de que marca se introduce
             switch(entradaTeclado.toLowerCase()){
                case "ford":
                vehiculoTest.setMarca(Vehiculo.MarcaDeVehiculo.FORD);
                marcaOk = true;
                break;
                case "toyota":
                vehiculoTest.setMarca(Vehiculo.MarcaDeVehiculo.TOYOTA);
                marcaOk = true;
                break;
                case "suzuki":
                vehiculoTest.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
                marcaOk = true;
                break;
                case "renault":
                vehiculoTest.setMarca(Vehiculo.MarcaDeVehiculo.RENAULT);
                marcaOk = true;
                break;
                case "seat":
                vehiculoTest.setMarca(Vehiculo.MarcaDeVehiculo.SEAT);
                marcaOk = true;
                break;
                default: System.out.println("ERROR EN LA INTRODUCCIÓN DE LA MARCA");
            }
        } while (marcaOk == false);
        //Mostramos por pantalla los atributos del objeto Vehiculo
        System.out.println("Los Datos del Vehiculo son: ");
        System.out.println("Matrícula: " + vehiculoTest.getMatricula());
        System.out.println("Marca: " + vehiculoTest.getMarca());
    }//Cierre del main
}//Cierre de la clase

Saludos y gracias por vuestro tiempo..... ;D
« Última modificación: 12 de Octubre 2016, 14:35 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Buenas Pandemia hay una cosa que no veo bien.

El atributo marca lo declaras private String marca;

¿Por qué lo declaras String si debe ser tipo MarcaDeVehiculo como dice el ejercicio?

En getMarca tienes

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

Aquí debería trabajarse con el tipo MarcaDeVehiculo en lugar de con String y así sucesivamente

Lee el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=3140.0 y los comentarios y trata de corregir el ejercicio

Salu2

saduj93

  • Sin experiencia
  • *
  • Mensajes: 1
    • Ver Perfil
buenas,

Usando el case que hizo pandemia y teniendo en consideración que el setter Marca tiene que ser del tipo enum iniciado, lo hice de la siguiente forma:

Código: [Seleccionar]
class Vehiculo{
    enum MarcaDeVehiculo{FORD,TOYOTA,SUZUKI,RENAULT,SEA};
    String Matricula;
    MarcaDeVehiculo Marca;
    //Getters
    public MarcaDeVehiculo getMarca(){return Marca;}
    public String getMatricula(){return Matricula;}
    //Setters
    public void setMatricula(String Matricula){this.Matricula=Matricula;}
    public void setMarca(MarcaDeVehiculo Marca){this.Marca=Marca;}
}

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

class TestVehiculo{
   
    public static void main(String[]args){
        Scanner entrada = new Scanner(System.in);
        Vehiculo vehiculo = new Vehiculo();
       
        System.out.print("Agregue Matricula: ");
        vehiculo.setMatricula(entrada.nextLine());

        System.out.print("\n Agregue Marca (FORD,TOYOTA,SUZUKI,RENAULT,SEA): ");
        switch(entrada.nextLine()){
            case "ford":
            vehiculo.setMarca(vehiculo.getMarca().FORD);
            break;
            case "toyota":
            vehiculo.setMarca(vehiculo.getMarca().TOYOTA);
            break;
            case "suzuki":
            vehiculo.setMarca(vehiculo.getMarca().SUZUKI);
            break;
            case "renault":
            vehiculo.setMarca(vehiculo.getMarca().RENAULT);
            break;
            case "sea":
            vehiculo.setMarca(vehiculo.getMarca().SEA);
        }
        System.out.println("El vehiculo agregado tiene:\n Matricula:"
        +(vehiculo.getMatricula())+"\n Marca:"+(vehiculo.getMarca()));
    }
}

Espero asi sirva.

Saludos.


Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Buenas saduj93 tu ejercicio está bien resuelto. Ten en cuenta que para plantear una solución a un ejercicio es preferible abrir un nuevo hilo en el foro, en lugar de responder sobre un hilo ya iniciado. Puedes ver las indicaciones generales para escribir en los foros en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Salu2

 

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