Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pandemia en 07 de Octubre 2016, 22:25
-
Buenas noches ahí va mi propuesta del ejercicio CU00681B del manual de fundamentos de programación Java.....
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.
/**
* 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
/**
* 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
-
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
-
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:
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;}
}
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.
-
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