|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
[Java] Enumerati: esempio di "public enum"?
Stavo facendo delle prove per provare come si utilizzano gli enumeri Java, ma sono un po confuso.
Pensavo avessero + automatismi per passare da lunedì a martedì, etc... Quacuno sa darmi una mano a completare un esempio sensato? Sistemando magari i metodi "oggi" e "domani". PLZ! GiorniSettimana.java Codice:
public enum GiorniSettimana {
lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica;
private int oggi;
public int getOggi() {
return this.oggi;
}
public void setOggi(int oggi) {
this.oggi = oggi;
}
public GiorniSettimana domani(GiorniSettimana gs) {
int i = gs.ordinal();
// TODO
return gs;
}
public void oggi(GiorniSettimana gs) {
System.out.println(name());
}
public static void stampaTutti() {
System.out.println("\nStampa la lista dei valori");
for (GiorniSettimana d : GiorniSettimana.values()) {
System.out.println(d);
}
}
}
Codice:
public class TestEnum {
public static void main(String[] args) {
for (GiorniSettimana r : GiorniSettimana.values()) {
System.out.print(r.ordinal());
System.out.print(" - ");
System.out.println(r.name());
}
GiorniSettimana.stampaTutti();
GiorniSettimana gs = GiorniSettimana.lunedì;
System.out.println(gs.toString());
}
}
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
- http://docs.oracle.com/javase/tutori...vaOO/enum.html - http://www.ajaxonomy.com/2007/java/m...50-enum-tricks La prima illustra le feature di base delle enum, la seconda mostra dei casi d'uso più raffinati. Quote:
Codice:
/**
* - il metodo statico values() restituisce tutti gli elementi della
* enumerazione, nell'ordine in cui sono stati dichiarati.
*
* - il metodo ordinal() invocato su un elemento dell'enumerazione
* restituisce il valore numerico associato a quell'elemento in base
* alla posizione che occupa nell'enumerazione.
*/
public class EnumTest01 {
public static void main(String... args) {
for (Giorno g : Giorno.values())
System.out.println(g + " = " + g.ordinal());
}
}
enum Giorno {
LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA;
}
Codice:
run: LUNEDI = 0 MARTEDI = 1 MERCOLEDI = 2 GIOVEDI = 3 VENERDI = 4 SABATO = 5 DOMENICA = 6 Ecco: Codice:
import java.util.Random;
/**
* Definisco ieri() e domani() come due metodi di istanza, cioè appartenenti
* ad ogni singolo elemento dell'enumerazione, e non all'enumerazione stessa.
*/
public class EnumTest02 {
public static void main(String... args) {
Giorno g = Giorno.GIOVEDI;
Random rand = new Random();
int count = rand.nextInt(7) + 1;// [1..7]
do {
System.out.println(g);
g = g.domani();
count--;
} while (count > 0);
}
}
enum Giorno {
LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA;
public Giorno domani() {
return (this == DOMENICA) ? LUNEDI : prendiProssimo(1);
}
public Giorno ieri() {
return (this == LUNEDI) ? DOMENICA : prendiProssimo(-1)
}
private Giorno prendiProssimo(int step) {
return Giorno.values()[ordinal() + step];
}
}
Codice:
GIOVEDI VENERDI SABATO DOMENICA
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 02-02-2012 alle 12:06. |
||
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Grazie!
Sai che non conoscevo "String... args", cosa rimpiazza?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Quote:
Codice:
...
public void foo(String... strings) { ... }
...
foo(); //strings è vuota
foo("ciao"); //strings contiene la stringa ciao
foo("hello", "world"); //strings contiene le stringhe hello e world
Altre info: http://docs.oracle.com/javase/1.5.0/...e/varargs.html Cyaps
__________________
iMac 27" 5K |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:18.



















