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 uttalande räcker. 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å ett uttryck med en lista över 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 är valt, 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.");
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 den översta variabeln kommer därefter, följt av en kolon. Till exempel ä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 som den kör (dvs. JOptionPane) och ett brottmeddelande. 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;

Det du förväntar dig att hända är att se en dialogruta där du säger "Du valde nummer 1", men eftersom det inte finns något brytande uttalande som matchar den första etiketten, körs också koden i den andra etikett. 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 lämna bort 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 frigörandet av JDK 7 är förmågan 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 metoden .toLowerCase betyder att alla etikettvärden kan vara små och små.

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

• Typen av variabeln 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.