Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Erik_Escriche en 22 de Noviembre 2016, 14:44
-
Hola de nuevo.
Dejo aquí mi respuesta al ejercicio propuesto en la entrega CU00681B de Aprender programación Java desde cero.
Clase Vehiculo:
public class Vehiculo {
enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
private String matricula;
private MarcaDeVehiculo marca;
public Vehiculo () {
matricula = "desconocida";
marca = MarcaDeVehiculo.SUZUKI;
}
public void setMatricula (String valorMatricula) {
matricula= valorMatricula;
}
public void setMarca (String valorMarca) {
String marcaCoche = valorMarca;
if (marcaCoche.equalsIgnoreCase("FORD")) {
marca = MarcaDeVehiculo.FORD;
} else if (marcaCoche.equalsIgnoreCase ("TOYOTA")) {
marca = MarcaDeVehiculo.TOYOTA;
} else if (marcaCoche.equalsIgnoreCase ("SUZUKI")) {
} else if (marcaCoche.equalsIgnoreCase ("RENAULT")) {
marca = MarcaDeVehiculo.RENAULT;
} else if (marcaCoche.equalsIgnoreCase ("SEAT")) {
marca = MarcaDeVehiculo.SEAT;
}
}
public String getMatricula () { return matricula; }
public String getMarca () {
return marca.toString().toLowerCase();
}
}
Clase TestVehiculo:
import java.util.Scanner;
/**
* Clase para comprobar que los métodos de la clase Vehiculo funcionan correctamente. *
* @author Erik Escriche
*/
public class TestVehiculo {
public static void main (String [] args) {
Vehiculo coche = new Vehiculo ();
System.out.println ("Datos por defecto: matrícula " + coche.getMatricula () + " y marca " + coche.getMarca() + ".");
System.out.println ("¿Cuál es la matrícula del coche?");
Scanner entrada1 = new Scanner (System.in);
String respuesta = entrada1.nextLine();
coche.setMatricula(respuesta);
System.out.println ("Matrícula actualizada a " + coche.getMatricula() + ".");
System.out.println ("¿Cuál es la marca del coche?");
Scanner entrada2 = new Scanner (System.in);
String respuesta2 = entrada2.nextLine();
while (!respuesta2.equalsIgnoreCase("FORD")&&!respuesta2.equalsIgnoreCase("SUZUKI")&&!respuesta2.equalsIgnoreCase("TOYOTA")&&!respuesta2.equalsIgnoreCase("RENAULT")&&
!respuesta2.equalsIgnoreCase("SEAT")) { System.out.println ("La marca introducida no es una marca válida. Introduzca una marca de las siguientes: FORD, TOYOTA, SUZUKI, RENAULT, SEAT.");
Scanner otraEntrada = new Scanner (System.in);
respuesta2 = otraEntrada.nextLine();
}
coche.setMarca (respuesta2);
System.out.println ("Marca actualizada a " + coche.getMarca() + ".");
}
}
¡Un saludo!
-
Buenos días.
El ejercicio es correcto.
Lo único que cambiaría es el uso de las variables para la respuesta.Yo lo haría asi:
import java.util.Scanner;
/**
* Clase para comprobar que los métodos de la clase Vehiculo funcionan correctamente. *
* @author Erik Escriche
*/
public class TestVehiculo {
public static void main (String [] args) {
Vehiculo coche = new Vehiculo ();
Scanner entrada = new Scanner (System.in);
String respuesta;
System.out.println ("Datos por defecto: matrícula " + coche.getMatricula () + " y marca " + coche.getMarca() + ".");
System.out.println ("¿Cuál es la matrícula del coche?");
respuesta = entrada.nextLine();
coche.setMatricula(respuesta);
System.out.println ("Matrícula actualizada a " + coche.getMatricula() + ".");
System.out.println ("¿Cuál es la marca del coche?");
respuesta= entrada.nextLine();
while (!respuesta.equalsIgnoreCase("FORD")&&!respuesta.equalsIgnoreCase("SUZUKI")&&!respuesta.equalsIgnoreCase("TOYOTA")&&!respuesta.equalsIgnoreCase("RENAULT")&&
!respuesta.equalsIgnoreCase("SEAT")) { System.out.println ("La marca introducida no es una marca válida. Introduzca una marca de las siguientes: FORD, TOYOTA, SUZUKI, RENAULT, SEAT.");
respuesta = entrada.nextLine();
}
coche.setMarca (respuesta);
System.out.println ("Marca actualizada a " + coche.getMarca() + ".");
}
}
Un saludo
-
Muchas gracias, ESOJ. No sé por qué, pero estaba convencido de que había que crear un nuevo objeto Scanner para cada entrada del usuario. Queda mucho más limpio de la forma en que lo has escrito.
¡Saludos!