Pokud váš program Java potřebuje vybrat mezi dvěma nebo třemi akcemi, Jestliže pak jinak tvrzení bude stačit. Nicméně, Jestliže pak jinak Prohlášení se začíná cítit těžkopádné, když existuje řada možností, které program bude muset udělat. Je jich jen tolik jinde... pokud příkazy, které chcete přidat dříve, než kód začne vypadat neupraveně. Pokud je vyžadováno rozhodnutí pro více možností, použijte příkaz switch.
Příkaz Switch
Příkaz switch umožňuje programu porovnat hodnotu výraz do seznamu alternativních hodnot. Představte si například, že jste měli rozbalovací nabídku, která obsahovala čísla 1 až 4. Podle toho, jaké číslo je vybráno, chcete, aby váš program udělal něco jiného:
// řekněme, že uživatel vybere číslo 4
int menuChoice = 4;
přepínač (menuChoice)
{
případ 1:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 1.");
přestávka;
případ 2:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 2.");
přestávka;
případ 3:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 3.");
přestávka;
// Tato volba je vybrána, protože hodnota 4 odpovídá hodnotě
// proměnná menuChoise
případ 4: JOptionPane.showMessageDialog (null, „Vybrali jste číslo 4.“); přestávka;
výchozí:
JOptionPane.showMessageDialog (null, „Něco se pokazilo!“);
přestávka;
}
Pokud se podíváte na syntaxi příkazu switch, měli byste si všimnout několika věcí:
1. Proměnná obsahující hodnotu, kterou je třeba porovnat, je umístěna nahoře uvnitř závorek.
2. Každá alternativní možnost začíná popisem případu. Hodnota, která má být porovnána s vrcholem proměnná příští, následované dvojtečkou. Například případ 1: je označení případu následované hodnotou 1 - stejně snadno by to mohl být případ 123: nebo případ -9:. Můžete mít tolik alternativních možností, kolik potřebujete.
3. Pokud se podíváte na výše uvedenou syntaxi, zvýrazní se čtvrtá alternativní možnost - popisek případu, kód, který provádí (tj. JOptionPane) a příkaz break. Příkaz break signalizuje konec kódu, který je třeba provést. Když se podíváte, uvidíte, že každá alternativní možnost končí příkazem break. Je velmi důležité zapamatovat si prohlášení o přerušení. Zvažte následující kód:
// řekněme, že uživatel vybere číslo 1
int menuChoice = 1;
přepínač (menuChoice)
případ 1:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 1.");
případ 2:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 2.");
přestávka;
případ 3:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 3.");
přestávka;
případ 4:
JOptionPane.showMessageDialog (null, "Vybrali jste číslo 4.");
přestávka;
výchozí:
JOptionPane.showMessageDialog (null, „Něco se pokazilo!“);
přestávka;
}
Očekáváte, že se stane, že uvidíte dialogové okno říká: "Vybrali jste číslo 1," ale protože neexistuje žádný příkaz break odpovídající prvnímu označení případu, bude také proveden kód ve druhém označení. To znamená, že se objeví další dialogové okno s názvem „Vybrali jste číslo 2“.
4. Ve spodní části příkazu switch je výchozí štítek. Je to jako záchranná síť v případě, že žádná z hodnot štítků případu neodpovídá srovnávané hodnotě. Je velmi užitečné poskytnout způsob provádění kódu, pokud není vybrána žádná z požadovaných možností.
Pokud vždy očekáváte, že bude vybrána jedna z dalších možností, můžete vynechat výchozí štítek, ale umístit jednu na konec každého příkazu, který vytvoříte, je dobrý zvyk. Může se zdát nepravděpodobné, že bude někdy použito, ale chyby se mohou vkrádat do kódu a mohou pomoci zachytit chybu.
Od JDK 7
Jednou ze změn syntaxe Java s vydáním JDK 7 je schopnost používat Řetězce v příkazech switch. Možnost porovnat hodnoty řetězce v příkazu switch může být velmi užitečná:
String name = "Bob";
přepínač (name.toLowerCase ())
{
případ "joe":
JOptionPane.showMessageDialog (null, „Dobré ráno, Joe!“);
přestávka;
případ "michael":
JOptionPane.showMessageDialog (null, "Jak to jde, Michaele?");
přestávka;
případ "bob":
JOptionPane.showMessageDialog (null, "Bob, můj starý příteli!");
přestávka;
případ "billy":
JOptionPane.showMessageDialog (null: „Odpoledne Billy, jak se mají děti?“);
přestávka;
výchozí:
JOptionPane.showMessageDialog (null, "Rád vás poznávám, John Doe.");
přestávka;
}
Při porovnání dvou hodnot String může být mnohem snazší, pokud se ujistíte, že jsou všechny ve stejném případě. Použití metody .toLowerCase znamená, že všechny hodnoty popisků velkých písmen mohou být v malá písmena.
Důležité informace o prohlášení o přepnutí
• Typ proměnné, proti které se má porovnávat, musí být znak char, bajt, krátký, int, znak, bajt, krátký, celé číslo, řetězec nebo enum.
• Hodnota vedle označení případu nemůže být proměnná. Musí to být konstantní výraz (např. Int literál, char literál).
• Hodnoty konstantních výrazů napříč všemi štítky velkých písmen musí být odlišné. Výsledkem by byla chyba kompilace:
přepínač (menuChoice)
{
případ 323:
JOptionPane.showMessageDialog (null, "Vybrali jste možnost 1.");
přestávka;
případ 323:
JOptionPane.showMessageDialog (null, "Vybrali jste možnost 2.");
přestávka;
• V příkazu switch může být pouze jeden výchozí štítek.
• Když používáte objekt pro příkaz switch (např. String, Integer, Character), ujistěte se, že není null. Null objekt bude mít za následek runtime chybu, když je spuštěn příkaz switch.