Autor Tema: Transformar un código if else en switch case java desde cero ejercicio CU00681B  (Leído 2647 veces)

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Ejercicio CU00681B del curso de fundamentos de POO. Se me dificultó mucho hacerlo; intenté con un case pero no pude, espero que esté bien, y si hay una forma más sencilla de hacerlo, por favor díganme.

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.

Código: [Seleccionar]
public class Vehiculo
{
    public enum MarcaDeVehiculo{FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
    public String matricula;
    public MarcaDeVehiculo marca;
   public Vehiculo(){
    matricula="";
    marca=null;
    }
    public void setMatricula(String valorMatricula){
    matricula=valorMatricula;
    }
    public void setMarca(MarcaDeVehiculo valorMarca){
    marca=valorMarca;
    }
    public String getMatricula(){ return matricula;}
    public MarcaDeVehiculo getMarca(){return marca;}
}

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

public class TestVehiculo
{
    public static void main (String [] args){
        Scanner entradaT= new Scanner(System.in);
        Vehiculo objetoVehiculo= new Vehiculo();
        String marcaVehiculo;
        Vehiculo.MarcaDeVehiculo marca;       
    System.out.println("introduzca la matricula:");
    objetoVehiculo.setMatricula(entradaT.nextLine());
    System.out.println("introduzca la marca(FORD, TOYOTA, SUZUKI, RENAULT,SEAT):");
    marcaVehiculo=entradaT.nextLine().toUpperCase();
    marca=Vehiculo.MarcaDeVehiculo.FORD;
    if(marca.toString().equals(marcaVehiculo)){}
    else if(marcaVehiculo.equals("TOYOTA")){marca=Vehiculo.MarcaDeVehiculo.TOYOTA;}
    else if(marcaVehiculo.equals("SUZUKI")){marca=Vehiculo.MarcaDeVehiculo.SUZUKI;}
    else if(marcaVehiculo.equals("RENAULT")){marca=Vehiculo.MarcaDeVehiculo.RENAULT;}
    else if(marcaVehiculo.equals("SEAT")){marca=Vehiculo.MarcaDeVehiculo.SEAT;}
    objetoVehiculo.setMarca(marca);
    System.out.println("la matricula es: " + (objetoVehiculo.getMatricula())+ "\n y la marca es: "+ (objetoVehiculo.getMarca()));
    }
}
« Última modificación: 14 de Agosto 2019, 18:58 por Ogramar »

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:java desde cero ejercicio (cu00681b)
« Respuesta #1 en: 09 de Noviembre 2018, 19:40 »
Hola Mari Conchis. El ejercicio esta bien pero te ha faltado poner esta linea.

Código: [Seleccionar]

else if(marcaVehiculo.equals("FORD")) marca=Vehiculo.MarcaDeVehiculo.FORD;}

Tienes todas las marcaVehiculo.equals menos esta. ok?

Con los condicionales if también queda bien y hace lo que se pide pero de todas las formas te incluyo el código con algunas modificaciones que he hecho del tuyo y con switch, case.

El código tuyo que no utilizo lo dejo comentado.

Citar
import java.util.Scanner;

public class TestVehiculo
{
    public static void main (String [] args){
        Scanner entradaT= new Scanner(System.in);
        Vehiculo objetoVehiculo= new Vehiculo();
        String marcaVehiculo;
        Vehiculo.MarcaDeVehiculo marca;   
        //Variable para que no imprima en pantalla y no entre en el metodo seter
        boolean noImprime=false;

        System.out.println("introduzca la matricula:");
        objetoVehiculo.setMatricula(entradaT.nextLine());
        System.out.println("introduzca la marca(FORD, TOYOTA, SUZUKI, RENAULT,SEAT):");
        marcaVehiculo=entradaT.nextLine().toUpperCase();
        marca=Vehiculo.MarcaDeVehiculo.FORD;

        switch (marcaVehiculo) {
            case "FORD":marca=Vehiculo.MarcaDeVehiculo.FORD;break;
            case "TOYOTA":marca=Vehiculo.MarcaDeVehiculo.TOYOTA;break;
            case "SUZUKI":marca=Vehiculo.MarcaDeVehiculo.SUZUKI;break;
            case "RENAULT":marca=Vehiculo.MarcaDeVehiculo.RENAULT;break;
            case "SEAT":marca=Vehiculo.MarcaDeVehiculo.SEAT;break;
            default: System.out.println ("EL VEHICULO NO EXISTE");noImprime=true; break;
        }

        /* if(marca.toString().equals(marcaVehiculo)){}
        else if(marcaVehiculo.equals("TOYOTA")){marca=Vehiculo.MarcaDeVehiculo.TOYOTA;}
        else if(marcaVehiculo.equals("SUZUKI")){marca=Vehiculo.MarcaDeVehiculo.SUZUKI;}
        else if(marcaVehiculo.equals("RENAULT")){marca=Vehiculo.MarcaDeVehiculo.RENAULT;}
        else if(marcaVehiculo.equals("SEAT")){marca=Vehiculo.MarcaDeVehiculo.SEAT;}*/
     
        if (noImprime==false){
          objetoVehiculo.setMarca(marca);
            System.out.println("la matricula es: " + (objetoVehiculo.getMatricula())+ "\n y la marca es: "+ (objetoVehiculo.getMarca()));
        }
    }
}

Un saludo ;)
« Última modificación: 17 de Noviembre 2018, 21:12 por Ogramar »

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Re:java desde cero ejercicio (cu00681b)
« Respuesta #2 en: 13 de Noviembre 2018, 07:40 »
Gracias, es que en esta instruccón: marca=Vehiculo.MarcaDeVehiculo.FORD

me marcaba error por eso lo hice con ciclos if. No sé porque en ocaciones escribo el codigo tal como está en los ejemplos y me marca error y si lo copio no. Y también a veces las instrucciones están bien pero aún así me marca error y eso me desespera.
« Última modificación: 14 de Agosto 2019, 19:00 por Ogramar »

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:java desde cero ejercicio (cu00681b)
« Respuesta #3 en: 14 de Noviembre 2018, 09:14 »
Si.
A mi también me ha pasado a veces, llego incluso a copiar y pegar el código encima de lo que tengo yo escrito, lo comparo letra por letra y es exactamente igual pero sigue dando error no se porque.

 ;)

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:java desde cero ejercicio (cu00681b)
« Respuesta #4 en: 17 de Noviembre 2018, 21:11 »
Buenas, es muy raro que ocurra pero ocasionalmente una clase se puede corromper (más que la clase, los ficheros que se crean asociados a esa clase) ó bien contener caracteres ocultos que generen errores de compilación. En ese caso, es recomendable copiar el código, eliminar la clase que da problemas y crear una nueva clase. Si aún así da problemas, ir pegando y compilando fragmento a fragmento hasta determinar qué fragmento ocasiona el problema.

Salu2

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:java desde cero ejercicio (cu00681b)
« Respuesta #5 en: 20 de Noviembre 2018, 10:21 »
ok. Gracias Ogramar. Me imaginaba algo de esto pero ahora al comentarlo tú ya estoy seguro. Gracias
« Última modificación: 14 de Agosto 2019, 19:01 por Ogramar »

 

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