Cuprins
Switch
Instrucţiunea switch
va verifica o variabilă cu o serie de valori. Atunci când întâlneşte o valoare egală, va executa toate instrucţiunile până la întâlnirea unui break
. În cazul în care nicio valoare nu este egală, va executa instrucţiunile din clauza default
. Exemplul de mai jos este echivalent cu exemplul de la if-else.
Exemplu 1
int weekday = 5; String result = ""; switch (weekday) { case 1: result = "Sunday"; break; case 2: result = "Monday"; break; case 3: result = "Tuesday"; break; default: result = "Other day"; }
Exemplu 2
int month = 5; int daysInMonth = 0; switch (month) { case 1: // Ianuarie case 3: // Martie case 5: // Mai case 7: // Iulie case 8: // August case 10: // Octombrie case 12: // Decembrie daysInMonth = 31; break; case 4: // Aprilie case 6: // Iunie case 9: // Septembrie case 11: // Noiembrie daysInMonth = 30; break; case 2: // Februarie daysInMonth = 28; break; }
Exemplu 3
switch (number) { // un oarecare numar intreg case 0: System.out.println("This is my first message!"); case 2: System.out.println("This is my second message!"); case 15: System.out.println("This is my 3333333 message!!!!"); break; case 13: System.out.println("4444444444444444"); case 4: System.out.println("No more messages after this 5th one!"); break; case 3: System.out.println("And one default, please!"); case 8: System.out.println("A default that will come after this"); default: System.out.println("a message by default..."); break; }
Exemplu String
Maria a obținut nota 10, Anca 9, iar restul 7. Dar îl avem și pe domnul profesor. Ce facem ca să afișăm nota?
if ( nume.equals("Maria") ) { System.out.println ("Nota 10"); } else if ( nume.equals("Anca") ) { System.out.println ("Nota 9"); } else if ( nume.equals("profesor") ) { // nu scriem nimic aici } else { System.out.println ("Nota 7"); }
Până la Java 7, String
nu era potrivit pentru a fi folosit într-un switch
şi trebuia folosit numărul elevului din catalog:
switch (nume) { case (16): syso ("Nota 10"); break; case (15): syso ("Nota 9"); break; case (-1): //Nu scriem nimic aici. break; default: syso ("Nota 7"); }
Sau:
if ( !nume.equals("Maria") && !nume.equals("Anca") && !nume.equals("profesor") ) { syso("Nota 7"); } //adică dacă numele nu e nici Maria, nici Anca și nici profesor //inlocuiti ghilimelele cu ghilimelele de la Eclipse //se poate si cu paranteze if ( (!nume.equals("Maria") ) && (!nume.equals("Anca")) && (!nume.equls("profesor")) ) .... if ( (x!=16) && (x!=15) && (x!=-1) ) ......
Observaţie
Varabila folosită la switch
poate fi doar byte
, short
, char
, int
sau String
. Poate funcţiona şi cu enumeraţii (enum
) sau clase wrapper pentru tipurile de date primitive menţionate (Character
, Byte
, Short
, Integer
). Valorile folosite la clauzele case
nu se pot repeta.
Assignment
Refaceţi exerciţiile de pe pagina if folosind un switch
.
Exerciţii
1. Să se realizeze un program în care utilizatorul introduce de la tastatură un număr între 0 și 6 reprezentând ziua din săptămână, astfel: 0 = Duminică, 1 = Luni … 6 = Sâmbătă. Folosind switch-ul să se afișeze un mesaj specific zilei din săptămână.
2. Refaceţi acelaşi exerciţiu cu String
în loc de int
.