Utilizarea declarației de comutare pentru mai multe opțiuni în Java

Dacă programul Java trebuie să aleagă între două sau trei acțiuni, an dacă, atunci, altfel afirmație 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 avea nevoie să le facă. Sunt doar atât de mulți altceva... dacă instrucțiunile pe care doriți să le adăugați înainte ca codul să înceapă să pară nefiresc. Când este necesară o decizie pentru mai multe opțiuni, utilizați instrucțiunea switch.

Declarația de comutare

O instrucțiune switch permite unui program capacitatea de a compara valoarea unui expresie la 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.”);
instagram viewer

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 de comparat cu partea superioară variabil vine apoi, urmată de colon. 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 de pauză. 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 așteptați să se întâmple este să vedeți a căsuță de dialog spunând „Ați ales numărul 1”, dar pentru că 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 să fie folosit vreodată, dar greșelile se pot strecura în cod și poate ajuta la apariția unei erori.

De când JDK 7

Una dintre modificările aduse sintaxei Java odată cu lansarea JDK 7 este capacitatea de utilizare Siruri de caractere în declarațiile de comutare. 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ă;
}

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 active litere mici.

Lucruri de reținut despre declarația de comutare

• Tipul variabilei cu care trebuie să fie comparată trebuie să fie un tip char, byte, short, int, Character, Byte, Short, Integer, String sau tip enum.

• Valoarea de lângă eticheta cazului nu poate fi o variabilă. Trebuie să fie o expresie constantă (de exemplu, un literal literal, un literal literal).

• Valorile expresiilor constante pe toate etichetele cazurilor trebuie să fie diferite. Următoarele vor avea ca rezultat o eroare de compilare:

switch (menuChoice)
{
cauza 323:
JOptionPane.showMessageDialog (nul, „Ai ales opțiunea 1.”);
pauză;
cauza 323:
JOptionPane.showMessageDialog (nul, „Ai ales opțiunea 2.”);
pauză;

• Există o singură etichetă implicită într-o instrucțiune switch.

• Când utilizați un obiect pentru instrucțiunea de comutare (de exemplu, String, Integer, Character), asigurați-vă că nu este nul. Un obiect nul va avea ca rezultat o eroare de execuție atunci când execuția instrucțiunii switch.