Als uw Java-programma een keuze moet maken tussen twee of drie acties, een als dan anders verklaring volstaat. echter, de als dan anders statement begint omslachtig te voelen wanneer er een aantal keuzes zijn die een programma moet maken. Er zijn er maar zoveel anders ... als instructies die u wilt toevoegen voordat de code er slordig uitziet. Wanneer een beslissing over meerdere opties vereist is, gebruikt u de schakeloptie.
Met een schakelinstructie kan een programma de waarde van een uitdrukking vergelijken met een lijst met alternatieve waarden. Stel je bijvoorbeeld voor dat je een vervolgkeuzemenu hebt met de cijfers 1 tot 4. Afhankelijk van welk nummer is gekozen, wil je dat je programma iets anders doet:
// laten we zeggen dat de gebruiker nummer 4 kiest
int menuChoice = 4;
schakelaar (menuKeuze)
zaak 1:
JOptionPane.showMessageDialog (null, "U heeft nummer 1 gekozen");
breken;
geval 2:
JOptionPane.showMessageDialog (null, "U heeft nummer 2 gekozen");
breken;
geval 3:
JOptionPane.showMessageDialog (null, "U heeft nummer 3 gekozen");
breken;
// Deze optie wordt gekozen omdat de waarde 4 overeenkomt met de waarde van
// de menuKies variabele
case 4: JOptionPane.showMessageDialog (null, "U heeft nummer 4 gekozen"); breken;
standaard:
JOptionPane.showMessageDialog (null, "Er is iets misgegaan!");
breken;
Als u naar de syntaxis van de switch-instructie kijkt, moet u een paar dingen opmerken:
1. De variabele met de waarde waarmee vergeleken moet worden, wordt bovenaan, tussen de haakjes geplaatst.
2. Elke alternatieve optie begint met een etiket op de doos. De waarde die moet worden vergeleken met de bovenste variabele volgt, gevolgd door een dubbele punt. Bijvoorbeeld, geval 1: is het etiket van de zaak gevolgd door de waarde 1 - het kan net zo gemakkelijk geval 123 zijn: of geval -9 :. U kunt zoveel alternatieve opties hebben als u nodig hebt.
3. Als u naar de bovenstaande syntaxis kijkt, wordt de vierde alternatieve optie gemarkeerd - het hoofdletterlabel, de code die wordt uitgevoerd (d.w.z. het JOptionPane) en een break-instructie. De break-instructie geeft het einde aan van de code die moet worden uitgevoerd. Als je kijkt, zie je dat elke alternatieve optie eindigt met een break-statement. Het is heel belangrijk om te onthouden om in de break-statement te plaatsen. Overweeg de volgende code:
// laten we zeggen dat de gebruiker nummer 1 kiest
int menuChoice = 1;
schakelaar (menuKeuze)
zaak 1:
JOptionPane.showMessageDialog (null, "U heeft nummer 1 gekozen");
geval 2:
JOptionPane.showMessageDialog (null, "U heeft nummer 2 gekozen");
breken;
geval 3:
JOptionPane.showMessageDialog (null, "U heeft nummer 3 gekozen");
breken;
geval 4:
JOptionPane.showMessageDialog (null, "U heeft nummer 4 gekozen");
breken;
standaard:
JOptionPane.showMessageDialog (null, "Er is iets misgegaan!");
breken;
Wat u verwacht te gebeuren, is een dialoogvenster te zien met de tekst "U hebt nummer 1 gekozen", maar omdat er geen break-statement is die overeenkomt met het eerste hoofdetiket, wordt de code in het tweede hoofdetiket ook uitgevoerd. Dit betekent dat het volgende dialoogvenster met de tekst "U koos nummer 2" ook verschijnt.
4. Er is een standaardlabel onderaan de schakelinstructie. Dit is als een vangnet voor het geval geen van de waarden van de etiketten van de behuizing overeenkomt met de waarde die ermee wordt vergeleken. Het is erg handig om een manier te bieden om code uit te voeren wanneer geen van de gewenste opties is gekozen.
Als je altijd verwacht dat een van de andere opties wordt gekozen, kun je het standaardlabel weglaten, maar het is een goede gewoonte om er een aan het einde van elke schakelopdracht te plaatsen die je maakt. Het lijkt misschien onwaarschijnlijk dat het ooit zal worden gebruikt, maar fouten kunnen de code binnensluipen en het kan helpen een fout op te sporen.
Een van de wijzigingen in de Java-syntaxis met de release van JDK 7 is de mogelijkheid om Strings in schakelinstructies te gebruiken. Stringwaarden in een schakelinstructie kunnen vergelijken, kan erg handig zijn:
String name = "Bob";
schakelaar (name.toLowerCase ())
case "joe":
JOptionPane.showMessageDialog (null, "Good morning, Joe!");
breken;
case "michael":
JOptionPane.showMessageDialog (null, "Hoe gaat het, Michael?");
breken;
case "bob":
JOptionPane.showMessageDialog (null, "Bob, mijn oude vriend!");
breken;
zaak "billy":
JOptionPane.showMessageDialog (null, "Afternoon Billy, hoe gaat het met de kinderen?");
breken;
standaard:
JOptionPane.showMessageDialog (null, "Aangenaam kennis te maken, John Doe.");
breken;
Bij het vergelijken van twee String-waarden kan het een stuk eenvoudiger zijn als u ervoor zorgt dat ze allemaal in hetzelfde geval zijn. Als u de .toLowerCase-methode gebruikt, kunnen alle labelwaarden in kleine letters in kleine letters worden weergegeven.
• Het type van de variabele waarmee vergeleken moet worden, moet een char, byte, short, int, Character, Byte, Short, Integer, String of enum type zijn.