Ak váš program Java potrebuje vybrať medzi dvoma alebo tromi akciami, ak teda inak výkaz bude stačiť. Avšak, ak teda inak vyhlásenie sa začína cítiť ťažkopádne, keď existuje niekoľko možností, ktoré by mohol program urobiť. Je ich toľko ináč Ak príkazy, ktoré chcete pridať pred tým, ako sa kód začne javiť ako neupravený. Ak sa vyžaduje rozhodnutie o viacerých možnostiach, použite príkaz switch.
Vyhlásenie o prepnutí
Príkaz switch umožňuje programu porovnávať hodnotu vyjadrenie do zoznamu alternatívnych hodnôt. Predstavte si napríklad, že ste mali rozbaľovaciu ponuku, ktorá obsahovala čísla 1 až 4. Podľa toho, ktoré číslo je vybrané, chcete, aby váš program urobil niečo iné:
// povedzme, že používateľ vyberie číslo 4
int menuChoice = 4;
prepínač (menuChoice)
{
prípad 1:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 1.“);
prestávka;
prípad 2:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 2.“);
prestávka;
prípad 3:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 3.“);
prestávka;
// Táto možnosť sa vyberie, pretože hodnota 4 sa zhoduje s hodnotou
// menu Premenná ponuky
prípad 4: JOptionPane.showMessageDialog (null, „Vybrali ste číslo 4.“); prestávka;
default:
JOptionPane.showMessageDialog (null, „Niečo sa pokazilo!“);
prestávka;
}
Ak sa pozriete na syntax príkazu switch, mali by ste si všimnúť niekoľko vecí:
1. Premenná obsahujúca hodnotu, ktorú je potrebné porovnávať, je umiestnená hore, vo vnútri zátvoriek.
2. Každá alternatívna možnosť začína štítkom prípadu. Hodnota, ktorá sa má porovnať s najvyššou hodnotou premenlivý potom nasleduje dvojbodka. Napríklad prípad 1: je označenie prípadu nasledované hodnotou 1 - rovnako ľahko to môže byť prípad 123: alebo prípad -9:. Môžete mať toľko alternatívnych možností, koľko potrebujete.
3. Ak sa pozriete na vyššie uvedenú syntax, zvýrazní sa štvrtá alternatívna možnosť - označenie prípadu, kód, ktorý vykoná (t. J. JOptionPane) a vyhlásenie prerušenia. Príkaz prerušenia signalizuje koniec kódu, ktorý je potrebné vykonať. Ak sa pozriete, uvidíte, že každá alternatívna možnosť končí vyhlásením o prerušení. Je veľmi dôležité pamätať si na vyhlásenie prerušenia. Zvážte nasledujúci kód:
// povedzme, že používateľ vyberie číslo 1
int menuChoice = 1;
prepínač (menuChoice)
prípad 1:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 1.“);
prípad 2:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 2.“);
prestávka;
prípad 3:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 3.“);
prestávka;
prípad 4:
JOptionPane.showMessageDialog (null, „Vybrali ste číslo 4.“);
prestávka;
default:
JOptionPane.showMessageDialog (null, „Niečo sa pokazilo!“);
prestávka;
}
Očakávate, že sa stane, že uvidíte dialógové okno hovorí: „Vybrali ste číslo 1“, ale pretože neexistuje žiadny príkaz na prerušenie, ktorý by zodpovedal návestiu prvého prípadu, vykoná sa aj vykonanie kódu v návestí druhého prípadu. To znamená, že sa zobrazí aj ďalšie dialógové okno s nápisom „Vybrali ste číslo 2“.
4. V dolnej časti príkazu switch je predvolená menovka. Je to ako bezpečnostná sieť v prípade, že žiadna z hodnôt štítkov prípadu nezodpovedá porovnávanej hodnote. Je veľmi užitočné poskytnúť spôsob vykonávania kódu, keď nie je vybraná žiadna z požadovaných možností.
Ak vždy očakávate, že bude vybraná jedna z ďalších možností, môžete vynechať predvolenú menovku, ale umiestniť jednu na koniec každého príkazu, ktorý vytvoríte, je dobrým zvykom. Môže sa zdať nepravdepodobné, že sa bude niekedy používať, ale chyby sa môžu vkradnúť do kódu a môžu pomôcť zachytiť chybu.
Od JDK 7
Jednou zo zmien syntaxe Java s vydaním JDK 7 je schopnosť používať reťazce v príkazoch switch. Byť schopný porovnávať hodnoty reťazcov v príkazu switch môže byť veľmi užitočné:
String name = "Bob";
prepínač (name.toLowerCase ())
{
prípad „joe“:
JOptionPane.showMessageDialog (null, „Dobrý deň, Joe!“);
prestávka;
prípad "michael":
JOptionPane.showMessageDialog (null, „Ako to ide, Michaele?“);
prestávka;
prípad "bob":
JOptionPane.showMessageDialog (null, „Bob, môj starý priateľ!“);
prestávka;
prípad "billy":
JOptionPane.showMessageDialog (null: „Popoludní Billy, ako sa majú deti?“);
prestávka;
default:
JOptionPane.showMessageDialog (null, „Teší ma, John Doe.“);
prestávka;
}
Pri porovnaní dvoch hodnôt reťazca môže byť oveľa jednoduchšie, ak sa uistíte, že sú všetky rovnaké. Použitie metódy .toLowerCase znamená, že všetky hodnoty štítkov prípadu môžu byť v malými písmenami.
Čo je potrebné pamätať na vyhlásenie o prepnutí
• Typ premennej, s ktorou sa má porovnávať, musí byť znak typu char, byte, short, int, Character, Byte, Short, Integer, String alebo enum.
• Hodnota vedľa označenia prípadu nemôže byť premenná. Musí to byť konštantný výraz (napr. Int literál, char literál).
• Hodnoty konštantných výrazov na všetkých štítkoch s prípadmi sa musia líšiť. Výsledkom by bola chyba kompilácie:
prepínač (menuChoice)
{
prípad 323:
JOptionPane.showMessageDialog (null, „Vybrali ste možnosť 1.“);
prestávka;
prípad 323:
JOptionPane.showMessageDialog (null, „Vybrali ste možnosť 2.“);
prestávka;
• Vo výkaze prepínača môže byť iba jeden predvolený štítok.
• Pri použití objektu pre príkaz switch (napr. String, Integer, Character) sa uistite, že nie je null. Po vykonaní príkazu switch bude mať nulový objekt za následok runtime chybu.