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: mary conchis en 09 de Noviembre 2018, 08:22

Título: Transformar un código if else en switch case java desde cero ejercicio CU00681B
Publicado por: mary conchis en 09 de Noviembre 2018, 08:22
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()));
    }
}
Título: Re:java desde cero ejercicio (cu00681b)
Publicado por: paramonso 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 ;)
Título: Re:java desde cero ejercicio (cu00681b)
Publicado por: mary conchis 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.
Título: Re:java desde cero ejercicio (cu00681b)
Publicado por: paramonso 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.

 ;)
Título: Re:java desde cero ejercicio (cu00681b)
Publicado por: Ogramar 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
Título: Re:java desde cero ejercicio (cu00681b)
Publicado por: paramonso en 20 de Noviembre 2018, 10:21
ok. Gracias Ogramar. Me imaginaba algo de esto pero ahora al comentarlo tú ya estoy seguro. Gracias