Dacă programul Java trebuie să aleagă între două sau trei acțiuni, an dacă, atunci, altfel declarația va fi suficientă. Însă dacă, atunci, altfel declarația începe să se simtă greoaie atunci când există o serie de alegeri pe care un program ar putea să le facă. Sunt doar atât de mulți altfel ... dacă instrucțiunile pe care doriți să le adăugați înainte ca codul să înceapă să arate incorect. Când este necesară o decizie pentru mai multe opțiuni, utilizați instrucțiunea switch.
O declarație de comutare permite unui program capacitatea de a compara valoarea unei expresii cu o listă de valori alternative. De exemplu, imaginați-vă că aveți un meniu derulant care conține numerele 1 până la 4. În funcție de numărul ales, doriți ca programul dvs. să facă ceva diferit:
// să zicem că utilizatorul alege numărul 4
int menuChoice = 4;
switch (menuChoice)
cazul 1:
JOptionPane.showMessageDialog (nul, „Ai ales numărul 1.”);
pauză;
cazul 2:
JOptionPane.showMessageDialog (nul, „Ai ales numărul 2.”);
pauză;
cazul 3:
JOptionPane.showMessageDialog (nul, "Ai ales numărul 3.");
pauză;
// Această opțiune este aleasă deoarece valoarea 4 corespunde valorii de
// variabila menuChoise
cazul 4: JOptionPane.showMessageDialog (nul, „Ați ales numărul 4.”); pauză;
Mod implicit:
JOptionPane.showMessageDialog (nul, "Ceva a mers prost!");
pauză;
Dacă te uiți la sintaxa instrucțiunii switch, ar trebui să observi câteva lucruri:
1. Variabila care conține valoarea cu care trebuie să fie comparată este plasată în partea de sus, în interiorul parantezelor.
2. Fiecare opțiune alternativă începe cu o etichetă de caz. Valoarea care trebuie comparată cu variabila de sus vine apoi, urmată de două puncte. De exemplu, cazul 1: este eticheta de caz urmată de valoarea 1 - ar putea fi la fel de ușor cazul 123: sau cazul -9:. Puteți avea câte opțiuni alternative aveți nevoie.
3. Dacă vă uitați la sintaxa de mai sus, a patra opțiune alternativă este evidențiată - eticheta de caz, codul pe care îl execută (adică, JOptionPane) și o instrucțiune break. Instrucțiunea de pauză semnalează sfârșitul codului care trebuie executat. Dacă vă uitați, veți vedea că fiecare opțiune alternativă se încheie cu o declarație de pauză. Este foarte important să vă amintiți să introduceți declarația de pauză. Luați în considerare următorul cod:
// să zicem că utilizatorul alege numărul 1
int menuChoice = 1;
switch (menuChoice)
cazul 1:
JOptionPane.showMessageDialog (nul, „Ai ales numărul 1.”);
cazul 2:
JOptionPane.showMessageDialog (nul, „Ai ales numărul 2.”);
pauză;
cazul 3:
JOptionPane.showMessageDialog (nul, "Ai ales numărul 3.");
pauză;
cazul 4:
JOptionPane.showMessageDialog (nul, „Ai ales numărul 4.”);
pauză;
Mod implicit:
JOptionPane.showMessageDialog (nul, "Ceva a mers prost!");
pauză;
Ceea ce vă așteptați să se întâmple este să vedeți o casetă de dialog care să spună „Ați ales numărul 1”, dar deoarece nu există o declarație de pauză care să corespundă primei etichete de caz, se execută și codul din a doua etichetă de caz. Aceasta înseamnă că va apărea următoarea casetă de dialog care spune „Ați ales numărul 2”.
4. Există o etichetă implicită în partea de jos a instrucțiunii switch. Aceasta este ca o plasă de siguranță în cazul în care niciuna dintre valorile etichetelor carcasei nu se potrivesc cu valoarea comparată cu aceasta. Este foarte util să furnizați un mod de executare a codului atunci când nu este aleasă niciuna dintre opțiunile dorite.
Dacă vă așteptați să alegeți una dintre celelalte opțiuni, atunci puteți lăsa eticheta implicită, dar să puneți una la sfârșitul fiecărei declarații de comutare pe care o creați este un obicei bun de a intra. Poate părea puțin probabil ca acesta să fie folosit vreodată, dar greșelile se pot strecura în cod și poate ajuta la o eroare.
Una dintre modificările aduse sintaxei Java odată cu lansarea JDK 7 este abilitatea de a folosi Strings în instrucțiunile switch. Posibilitatea de a compara valorile șirului într-o instrucțiune switch poate fi foarte utilă:
Numele șirului = "Bob";
switch (nume.toLowerCase ())
cazul "joe":
JOptionPane.showMessageDialog (nul, "Bună dimineața, Joe!");
pauză;
carcasa "michael":
JOptionPane.showMessageDialog (nul, „Cum merge, Michael?”);
pauză;
carcasa "bob":
JOptionPane.showMessageDialog (nul, "Bob, vechiul meu prieten!");
pauză;
carcasa "billy":
JOptionPane.showMessageDialog (nul, "După-amiaza Billy, cum sunt copiii?");
pauză;
Mod implicit:
JOptionPane.showMessageDialog (nul, "Încântat să vă cunosc, John Doe.");
pauză;
Atunci când comparați două valori String, poate fi mult mai ușor dacă vă asigurați că toate sunt în același caz. Folosind metoda .toLowerCase înseamnă că toate valorile etichetelor de caz pot fi cu litere mici.
• Tipul variabilei cu care trebuie să fie comparată trebuie să fie un tip de caractere, byte, scurt, int, Character, Byte, Short, Integer, String sau tip enum.