Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con ejercicio de enumeraciónes

Estas en el tema de Problema con ejercicio de enumeraciónes en el foro de Java en Foros del Web. Bueno, mi libro me pide un problema que parece muy sencillo, pero no entiendo cómo hacerlo :S Cita: Escriba un tipo enum llamado LuzSemaforo, cuyas ...
  #1 (permalink)  
Antiguo 01/05/2012, 18:06
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Pregunta Problema con ejercicio de enumeraciónes

Bueno, mi libro me pide un problema que parece muy sencillo, pero no entiendo cómo hacerlo :S

Cita:
Escriba un tipo enum llamado LuzSemaforo, cuyas constantes (ROJO, VERDE, AMARILLO) reciban un parámetro: la duración de la luz. Escriba un programa para probar la enum LuzSemaforo, de manera que muestre las constantes de la enum y sus duraciones.
Bueno, primero proceso a crear el archivo de la enum.

Código Java:
Ver original
  1. public enum LuzSemaforo
  2. {
  3.     ROJO(),
  4.     VERDE(),
  5.     AMARILLO();
  6. }

Pero... cómo hago para que las constantes reciban un parámetro? poniendo 'int x' entre sus paréntesis?

Necesito su ayuda, explíquenme D:

Gracias!
  #2 (permalink)  
Antiguo 01/05/2012, 23:32
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema con ejercicio de enumeraciónes

Necesito su ayuda. No parece algo complicado... D:
  #3 (permalink)  
Antiguo 02/05/2012, 05:46
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema con ejercicio de enumeraciónes

Buenas,

Tienes que declarar un constructor al que le pases un valor entero y crearte un atributo donde guardes ese valor.


Código Java:
Ver original
  1. public enum LuzSemaforo{
  2.     ROJO(10),
  3.     VERDE(10),
  4.     AMARILLO(2);
  5.    
  6.     private int duracion;
  7.    
  8.     LuzSemaforo(int duracion){
  9.         this.duracion = duracion;
  10.        
  11.     }
  #4 (permalink)  
Antiguo 02/05/2012, 10:58
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema con ejercicio de enumeraciónes

Cita:
Iniciado por alexg88 Ver Mensaje
Buenas,

Tienes que declarar un constructor al que le pases un valor entero y crearte un atributo donde guardes ese valor.


Código Java:
Ver original
  1. public enum LuzSemaforo{
  2.     ROJO(10),
  3.     VERDE(10),
  4.     AMARILLO(2);
  5.    
  6.     private int duracion;
  7.    
  8.     LuzSemaforo(int duracion){
  9.         this.duracion = duracion;
  10.        
  11.     }
Eso había pensado y visto en mi libro, pero entonces de qué sirven los números que están entre los paréntesis? :S

Muchas gracias, has sido el único que me ha contestado u.u
  #5 (permalink)  
Antiguo 02/05/2012, 11:33
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema con ejercicio de enumeraciónes

Los números se usan para dar valor a los campos de la enumeración.

La verdad es que las enumeraciones en java son un poco raras.

Por una parte, los valores de la enumeración son como atributos estáticos de la enumeración y, a su vez, los valores enumerados son de la propia clase enumerada.

Por ejemplo, el enumerado LuzSemaforo tiene tres valores (ROJO, VERDE, AMARILLO) que se acceden como LuzSemaforo.ROJO, ... y, a su vez, los valores son de tipo LuzSemaforo y, por tanto, son como objetos.

Por eso, al crear un constructor (o una especie de) puedes pasarle valores y guardarlos en atributos internos.


Para asignarle valores a cada valor, crea un setter:

Código Java:
Ver original
  1. public enum LuzSemaforo{
  2.     ROJO(10),
  3.     VERDE(10),
  4.     AMARILLO(2);
  5.    
  6.     private int duracion;
  7.    
  8.     LuzSemaforo(int duracion){
  9.         this.duracion = duracion;
  10.        
  11.     }
  12.  
  13.    public void setDuracion(int duracion){
  14.    this.duracion = duracion;
  15.    }
  16.  
  17.    public static void main(String[] args){
  18.      
  19.       LuzSemaforo.ROJO.setDuracion(15);
  20.    }
  #6 (permalink)  
Antiguo 02/05/2012, 12:35
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema con ejercicio de enumeraciónes

Los constructores de las enumeraciones funcionan... raro?

Es que lo que entendí es que si:

Código Java:
Ver original
  1. public enum LoQueSea{
  2.    ROJO(10),
  3.    AMARILLO(2),
  4.    VERDE(10);
  5.  
  6.    private int duracion;
  7.  
  8.    public LoQueSea(int x){
  9.       duracion = x;
  10.    }
  11. }

Al mmm... manipular LuzSemaforo.ROJO en realidad se manipula un objeto que su constructor TOMA el valor 10 de ROJO(10) e inicializa duracion con ese valor?

¿Estoy entendiendo bien, o estoy confundido?

Vaya lío con las enumeraciones xD
  #7 (permalink)  
Antiguo 02/05/2012, 13:04
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema con ejercicio de enumeraciónes

Exacto, así funcionan las enumeraciones.

Sí que es un poco raro la verdad, pero le da mucha más flexibilidad a las enumeraciones que en otros lenguajes de programación.

Además, si defines un constructor con algún parámetro y no defines otro vacío, tendrías que pasarle obligatoriamente valores al constructor para que funcione.
(esto es igual que en las clases, al fin y al cabo, una enumeración no es más que una clase con atributos estáticos y finales (los valores enumerados) que son objetos del mismo tipo que el enumerado (un lio eh).

Etiquetas: enum, enumeraciónes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:26.