Använda switch-uttalandet för flera val i Java

Om ditt Java-program måste välja mellan två eller tre åtgärder, en om då annars påstående kommer att räcka. Men om då annars uttalandet börjar känna sig besvärligt när det finns ett antal val som ett program kan behöva göra. Det finns bara så många annars... om uttalanden du vill lägga till innan koden börjar se snygg ut. När ett beslut över flera alternativ krävs, använd switch-uttalandet.

Växlarmeddelande

Ett switch-uttalande ger ett program möjlighet att jämföra värdet på en uttryck till en lista med alternativa värden. Föreställ dig till exempel att du hade en rullgardinsmeny som innehöll siffrorna 1 till 4. Beroende på vilket nummer som väljs, vill du att ditt program ska göra något annorlunda:

// låt oss säga att användaren väljer nummer 4
int menuChoice = 4;
switch (menuChoice)
{
fall 1:
JOptionPane.showMessageDialog (null, "Du valde nummer 1.");
ha sönder;
fall 2:
JOptionPane.showMessageDialog (null, "Du valde nummer 2.");
ha sönder;
fall 3:
JOptionPane.showMessageDialog (null, "Du valde nummer 3.");
instagram viewer

ha sönder;
// Detta alternativ väljs eftersom värdet 4 matchar värdet på
// menynVälj variabel
fall 4: JOptionPane.showMessageDialog (null, "Du valde nummer 4."); ha sönder;
standard:
JOptionPane.showMessageDialog (null, "Något gick fel!");
ha sönder;
}

Om du tittar på syntaxen i switch-uttalandet bör du märka några saker:

1. Variabeln som innehåller värdet som måste jämföras med placeras överst, inom parenteserna.

2. Varje alternativ startar med en etikett. Värdet som ska jämföras mot toppen variabel kommer nästa, följt av en kolon. Exempelvis är fall 1: är etiketten följt av värdet 1 - det kan lika enkelt vara fall 123: eller fall -9:. Du kan ha så många alternativ som du behöver.

3. Om du tittar på ovanstående syntax markeras det fjärde alternativet - falletiketten, koden den kör (dvs JOptionPane) och ett brytande uttalande. Brottmeddelandet signalerar slutet på koden som måste köras. Om du tittar ser du att alla alternativ avslutas med en pausuttalning. Det är väldigt viktigt att komma ihåg att lägga in pausuttalandet. Tänk på följande kod:

 // låt oss säga att användaren väljer nummer 1
int menuChoice = 1;
switch (menuChoice)
fall 1:
JOptionPane.showMessageDialog (null, "Du valde nummer 1.");
fall 2:
JOptionPane.showMessageDialog (null, "Du valde nummer 2.");
ha sönder;
fall 3:
JOptionPane.showMessageDialog (null, "Du valde nummer 3.");
ha sönder;
fall 4:
JOptionPane.showMessageDialog (null, "Du valde nummer 4.");
ha sönder;
standard:
JOptionPane.showMessageDialog (null, "Något gick fel!");
ha sönder;
}

Vad du förväntar dig att hända är att se en dialog ruta med att säga "Du valde nummer 1", men eftersom det inte finns något brytande uttalande som matchar den första ärendetiketten körs också koden i den andra etiketten. Detta betyder att nästa dialogruta som säger "Du valde nummer 2" kommer också att visas.

4. Det finns en standardetikett längst ner i switch-uttalandet. Detta är som ett säkerhetsnät om ingen av värdena på etiketter matchar värdet som jämförs med det. Det är mycket användbart att tillhandahålla ett sätt att köra kod när inget av de önskade alternativen väljs.

Om du alltid förväntar dig att ett av de andra alternativen ska väljas, kan du utelämna standardetiketten, men att sätta ett i slutet av varje switch-uttalande du skapar är en god vana att komma in på. Det kan tyckas osannolikt att det någonsin kommer att användas men fel kan krypa in i koden och det kan hjälpa till att få ett fel.

Sedan JDK 7

En av förändringarna i Java-syntaxen med frisläppandet av JDK 7 är möjligheten att använda strängar i switch-uttalanden. Att kunna jämföra strängvärden i ett switch-uttalande kan vara mycket praktiskt:

Strängnamn = "Bob";
switch (name.toLowerCase ())
{
fall "joe":
JOptionPane.showMessageDialog (null, "God morgon, Joe!");
ha sönder;
fall "michael":
JOptionPane.showMessageDialog (null, "Hur går det, Michael?");
ha sönder;
fall "bob":
JOptionPane.showMessageDialog (null, "Bob, min gamla vän!");
ha sönder;
fall "billy":
JOptionPane.showMessageDialog (null, "Eftermiddag Billy, hur går det med barnen?");
ha sönder;
standard:
JOptionPane.showMessageDialog (null, "Nöjd att träffa dig, John Doe.");
ha sönder;
}

När du jämför två strängvärden kan det vara mycket lättare om du ser till att alla är i samma fall. Att använda .toLowerCase-metoden innebär att alla etikettvärden kan vara i små bokstäver.

Saker att komma ihåg om uttalandet om växeln

• Typen för den variabel som ska jämföras mot måste vara en typ av kar, byte, kort, int, karaktär, byte, kort, heltal, sträng eller enum.

• Värdet bredvid falletiketten kan inte vara en variabel. Det måste vara ett konstant uttryck (t.ex. en int-bokstav, en kol-bokstav).

• Värdena för konstant uttryck i alla falletiketter måste vara olika. Följande skulle resultera i ett kompileringstidsfel:

switch (menuChoice)
{
fall 323:
JOptionPane.showMessageDialog (null, "Du valde alternativ 1.");
ha sönder;
fall 323:
JOptionPane.showMessageDialog (null, "Du valde alternativ 2.");
ha sönder;

• Det kan bara finnas en standardetikett i ett switch-uttalande.

• När du använder ett objekt för kopplingssatsen (t.ex. sträng, heltal, karaktär), se till att det inte är noll. Ett null-objekt kommer att resultera i ett runtime-fel när switch-uttalandet körs.