Switch-Case-Anweisung

Die Switch-Case-Anweisung ist dann gut, um bspw. mehrere if-Anfragen des gleichen Typs in einem Abwasch abzuhandeln.

Haben wir z.B. einen Code, wie diesen hier

int x = // Ergebnis wird durch irgendwas übergeben

if (x == 1) {
  System.out.println("Der Wert von x ist 1!");
}

if (x == 2) {
  System.out.println("Der Wert von x ist 2!");
}

// usw...

kann man dies viel einfach mit einer Switch-Case lösen:

int x = //...
switch(x) {

case 1:
	System.out.println("Wert ist 1!");
	break;
case 2:
	System.out.println("Wert ist 2!");
	break;
// usw....
}

Stellt die Variable x bspw. das Ergebnis eines Wurfs mit einem Würfel dar, so kann man mit einer solchen Switch-Case-Anweisung ganz einfach -abhängig vom Ergebnis- bestimmen, wie das Programm weiterverfahren soll!

Wie fügt man aber eine „Standardverhaltensweise“ ein? Wenn also keiner der Cases eintritt, aber dennoch was gemacht werden soll? Das Stichwort hier heißt „default“:

	public static void main(String[] args) {

		String name = "Armin";

		switch (name) {
		case "Armin":
			System.out.println("Hallo Armin!");
			break;
		case "Martin":
			System.out.println("Hallo Martin!");
			break;
		default:
			System.out.println("Hallo Unbekannter!");
			break;
		}
	}

Ist der String name weder „Armin“ noch „Martin“, springt das Programm automatisch in den default-Teil und gibt dann „Hallo Unbekannter!“ aus.

Erlaubte Datentypen sind:

  • Ganzzahlen (Integers)
  • Text (Strings, seit Java 1.7!)
  • Enumerationen (Enum)
  • Die Datentypen byte, char und short, da diese intern wie ein int behandelt werden

Dem aufmerksamen Leser werden die „break;“s aufgefallen sein. Dise sind nötig, falls man möchte, dass wirklich nur der eine case-Block ausgeführt wird. Würde man diese weglassen, würde er noch die ganzen anderen Blöcke, die unter dem Sprungziel stehen, ausführen.

Manchmal ist das aber gewollt, wie z.B.:

		char buchstabe = 'A';

		switch (buchstabe) {

		case 'A':   // geht automatisch ins nächste case, da kein "break;" existiert
		case 'r':   // geht automatisch ins nächste case, da kein "break;" existiert
		case 'm':   // geht automatisch ins nächste case, da kein "break;" existiert
		case 'i':   // geht automatisch ins nächste case, da kein "break;" existiert
		case 'n':
		            // dann ist er hier und führt den Code aus
			System.out.println("Der Buchstabe kommt in \"Armin\" vor!");
			break;
		default:
			System.out
					.println("Der Buchstabe kommt nicht (!) in \"Armin\" vor!");
		}

mit der Ausgabe

Der Buchstabe kommt in "Armin" vor!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.