Hola buenas, soy nuevo aquí, he llegando a este foro después de buscar mucho en internet acerca de los tipos enumerados, he decidido registrarme porque veo que este foro es muy interesante, hay gente que "controla mucho" y está muy bien hecho, estoy seguro que me vendrá genial para aprender a programar.
Tengo el siguiente problema:
Tengo que realizar un proyecto con BlueJ para gestionar una sala de cine. Una clase principal llamada pelicula debe tener varios atributos (con sus geters y seters), uno de ellos es el género de la pelicula que debe ser de tipo enumerado. Siempre que creo una nueva instancia de la clase pelicula, al llegar al atributo genero y darle valor, siempre me salta el
"Error: incompatible types".Llevo muchas horas y he intentado de todo: utilizando un tipo enumerado "simple", un tipo de enumerado "complejo" asociando una cadena a cada valor del tipo enumerado, por ejemplo: TERROR("Terror"), he probado con switch, con if-else, con llamadas externas a métodos del tipo enumerado, pero no hay manera.
esta es la clase enumerada:
public enum GeneroEnumerado
{
COMEDIA, ACCION, TERROR, CIENCIAFICCION;
}
esta la principal:
public class Pelicula
{
private String titulo;
private String director;
private int anyo;
private String sinopsis;
private GeneroEnumerado genero;
public Pelicula(String eltitulo, String eldirector, int elanyo, String lasinopsis,
String elgenero)
{
// initialise instance variables
titulo=eltitulo;
director=eldirector;
anyo=elanyo;
sinopsis=lasinopsis;
genero=GeneroEnumerado.COMEDIA;
if ( elgenero == "terror")
{
genero=GeneroEnumerado.TERROR;
}
else if ( elgenero == "comedia")
{
genero=GeneroEnumerado.COMEDIA;
}
else if ( elgenero == "accion")
{
genero=GeneroEnumerado.ACCION;
}
else if ( elgenero == "cienciaficcion")
{
genero=GeneroEnumerado.CIENCIAFICCION;
}
else
{
System.out.println("no es un genero valido");
}
}
public GeneroEnumerado getGenero()
{
return genero;
}
public String getTitulo()
{
return titulo;
}
public String getDirector()
{
return director;
}
public int getAnyo()
{
return anyo;
}
public String getSinopsis()
{
return sinopsis;
}
public void setTitulo(String eltitulo)
{
titulo=eltitulo;
}
public void setDirector(String eldirector)
{
director=eldirector;
}
public void setAnyo(int elanyo)
{
anyo=elanyo;
}
public void setSinopsis(String lasinopsis)
{
sinopsis=lasinopsis;
}
public void mostrarInfoPelicula()
{
// put your code here
System.out.println("Pelicula: <"+titulo+">");
System.out.println("Director: <"+director+">");
System.out.println("Anyo: <"+anyo+">");
System.out.println("Sinopsis: <"+sinopsis+">");
}
}
-Como se ve, inicializo el tipo enumerado dándole un valor, COMEDIA en este caso, pues creo que de lo contrario sería fallo al estar vacío, null.
-Esta es una de las muchas "malas versiones" que he probado, me he atascado en esto y tengo que modificar varias cosas, por ejemplo sé que debo utilizar la palabra clave this.
-Como también he de crear un setGenero, creo que sería mejor llamar a dicho setGenero desde el constructor, ¿no?.
-Consultando el foro he visto problemas en que se utiliza el método Scanner, pero yo de momento no puedo utilizarlo, no debo utilizar ni Scanner ni importar ningún otro paquete.
-A la hora de entrar el atributo he probado de muchas formas, por ejemplo si quiero entrar terror he probado: "TERROR", TERROR, "terror", terror, pero ni de suerte.
Muchas gracias de antemano, sé que estoy muy verde todavía
, pero me está gustando esto de programar.