Computerwissenschaften

Verwenden der Switch-Anweisung für mehrere Auswahlmöglichkeiten in Java

Wenn Ihr Java-Programm zwischen zwei oder drei Aktionen wählen muss, reicht eine if, then, else- Anweisung aus. Die if-else- Anweisung fühlt sich jedoch umständlich an, wenn ein Programm eine Reihe von Entscheidungen treffen muss. Es gibt nur so viele andere … wenn Anweisungen hinzugefügt werden sollen, bevor der Code unordentlich aussieht. Wenn eine Entscheidung über mehrere Optionen erforderlich ist, verwenden Sie die switch-Anweisung.

 

Die Switch-Anweisung

Mit einer switch-Anweisung kann ein Programm den Wert eines Ausdrucks mit einer Liste alternativer Werte vergleichen. Stellen Sie sich zum Beispiel vor, Sie hätten ein Dropdown-Menü mit den Nummern 1 bis 4. Je nachdem, welche Nummer ausgewählt wurde, soll Ihr Programm etwas anderes tun:

// 
Nehmen wir an, der Benutzer wählt Nummer 4 int menuChoice=4; 
switch (menuChoice) 
{ 
case 1: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 1 gewählt"); 
brechen; 
Fall 2: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 2 gewählt"); 
brechen; 
Fall 3: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 3 gewählt"); 
brechen; 
// Diese Option wird ausgewählt, weil der Wert 4 mit dem Wert der 
// menuChoise-Variablen übereinstimmt. 
Fall 4: JOptionPane.showMessageDialog (null, "Sie haben Nummer 4 gewählt."); brechen; 
Standard: 
JOptionPane.showMessageDialog (null, "Etwas ist schief gelaufen!"); 
brechen; 
}}

Wenn Sie sich die Syntax der switch-Anweisung ansehen, sollten Sie einige Dinge beachten:

1. Die Variable, die den Wert enthält, mit dem verglichen werden muss, wird oben in den Klammern platziert.

2. Jede alternative Option beginnt mit einem Falletikett. Als nächstes folgt der Wert, der mit der obersten Variablen verglichen werden soll , gefolgt von einem Doppelpunkt. Zum Beispiel ist Fall 1: die Fallbezeichnung, gefolgt vom Wert 1 – es könnte genauso gut Fall 123: oder Fall -9: sein. Sie können so viele alternative Optionen haben, wie Sie benötigen.

3. Wenn Sie sich die obige Syntax ansehen, wird die vierte alternative Option hervorgehoben – die Fallbezeichnung, der von ihr ausgeführte Code (dh das JOptionPane) und eine break-Anweisung. Die break-Anweisung signalisiert das Ende des Codes, der ausgeführt werden muss. Wenn Sie nachsehen, werden Sie feststellen, dass jede alternative Option mit einer break-Anweisung endet. Es ist sehr wichtig, sich daran zu erinnern, die break-Anweisung einzugeben. Betrachten Sie den folgenden Code:

// 
Angenommen , der Benutzer wählt die Nummer 1 int menuChoice=1; 
switch (menuChoice) 
case 1: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 1 gewählt"); 
Fall 2: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 2 gewählt"); 
brechen; 
Fall 3: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 3 gewählt"); 
brechen; 
Fall 4: 
JOptionPane.showMessageDialog (null, "Sie haben Nummer 4 gewählt"); 
brechen; 
Standard: 
JOptionPane.showMessageDialog (null, "Etwas ist schief gelaufen!"); 
brechen; 
}}

Was Sie erwarten, ist ein Dialogfeld mit der Aufschrift „Sie haben Nummer 1 gewählt“. Da jedoch keine break-Anweisung mit der ersten Fallbezeichnung übereinstimmt, wird auch der Code in der zweiten Fallbezeichnung ausgeführt. Dies bedeutet, dass auch das nächste Dialogfeld mit der Aufschrift „Sie haben Nummer 2 gewählt“ angezeigt wird.

4. Am Ende der switch-Anweisung befindet sich eine Standardbezeichnung. Dies ist wie ein Sicherheitsnetz für den Fall, dass keiner der Werte der Gehäusekennzeichnungen mit dem Wert übereinstimmt, der mit ihm verglichen wird. Es ist sehr nützlich, eine Möglichkeit zum Ausführen von Code bereitzustellen, wenn keine der gewünschten Optionen ausgewählt ist.

Wenn Sie immer erwarten, dass eine der anderen Optionen ausgewählt wird, können Sie die Standardbezeichnung weglassen. Es ist jedoch eine gute Angewohnheit, eine am Ende jeder von Ihnen erstellten switch-Anweisung einzufügen. Es mag unwahrscheinlich erscheinen, dass es jemals verwendet wird, aber Fehler können sich in den Code einschleichen und helfen, einen Fehler zu erkennen.

 

Seit JDK 7

Eine der Änderungen an der Java-Syntax mit der Veröffentlichung von JDK 7 ist die Möglichkeit, Strings in switch-Anweisungen zu verwenden. Das Vergleichen von String-Werten in einer switch-Anweisung kann sehr praktisch sein:

String name="Bob"; 
switch (name.toLowerCase ()) 
{ 
case "joe": 
JOptionPane.showMessageDialog (null, "Guten Morgen, Joe!"); 
brechen; 
case "michael": 
JOptionPane.showMessageDialog (null, "Wie geht es dir, Michael?"); 
brechen; 
case "bob": 
JOptionPane.showMessageDialog (null, "Bob, mein alter Freund!"); 
brechen; 
case "billy": 
JOptionPane.showMessageDialog (null, "Afternoon Billy, wie geht es den Kindern?"); 
brechen; 
Standard: 
JOptionPane.showMessageDialog (null, "Freut mich, Sie kennenzulernen, John Doe."); 
brechen; 
}}

Wenn Sie zwei String-Werte vergleichen, kann es viel einfacher sein, wenn Sie sicherstellen, dass sie alle im selben Fall sind. Wenn Sie die .toLowerCase-Methode verwenden, können alle Werte für Groß- und Kleinschreibung in Kleinbuchstaben angegeben werden .

 

Dinge, die Sie über die Switch-Anweisung beachten sollten

• Der Typ der Variablen, mit der verglichen werden soll, muss ein Char-, Byte-, Short-, Int-, Character-, Byte-, Short-, Integer-, String- oder Enum-Typ sein.

• Der Wert neben der Fallbezeichnung kann keine Variable sein. Es muss ein konstanter Ausdruck sein (z. B. ein int-Literal, ein char-Literal).

• Die Werte der konstanten Ausdrücke in allen Fallbezeichnungen müssen unterschiedlich sein. Folgendes würde zu einem Fehler bei der Kompilierung führen:

switch (menuChoice) 
{ 
case 323: 
JOptionPane.showMessageDialog (null, "Sie haben Option 1 gewählt"); 
brechen; 
Fall 323: 
JOptionPane.showMessageDialog (null, "Sie haben Option 2 gewählt"); 
brechen;

• Eine switch-Anweisung kann nur eine Standardbezeichnung enthalten.

• Wenn Sie ein Objekt für die switch-Anweisung verwenden (z. B. String, Integer, Character), stellen Sie sicher, dass es nicht null ist. Ein Null-Objekt führt zu einem Laufzeitfehler, wenn die switch-Anweisung ausgeführt wird.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.