Java Switch Case im Falle, dass alle "case"s falsch sind?
Ich habe ein paar if-else-Ausdrücke, die ich gut durch switch ersetzen könnte, jedoch möchte ich auch ein else-Statement behalten, d.h. wenn alle Bedingungen vorher unwahr sind - (wie) geht das?
String test = "2";
if (test.charAt(0) == 'a') {
System.out.println("1");
} else if (test.charAt(0) == 'b'){
System.out.println("2");
} else if (test.charAt(0) == 'c'){
System.out.println("3");
} else if (test.charAt(0) == 'd'){
System.out.println("4");
} else if (test.charAt(0) == 'e'){
System.out.println("5");
} else {
System.out.println("Nicht vorhanden");
}
String test = "2";
switch(test.charAt(0)){
case 'a': System.out.println("1"); break; // if bzw. if else
case 'b': System.out.println("2"); break; // if bzw. if else
case 'c': System.out.println("3"); break; // if bzw. if else
case 'd': System.out.println("4"); break; // if bzw. if else
case 'e': System.out.println("5"); break; // if bzw. if else
case test.charAt(0): System.out.println("Nicht vorhanden"); break; //else-Äquivalent
}
doch dann, selbst wenn ich test.charAt(0) in eine Variable extrahiere, erhalte ich:
"case expressions must be a constant statement".
Und das macht natürlich auch Sinn, dennoch wollte ich fragen, ob es eine Möglichkeit gibt, mit Switch-Cases eine Möglichkeit zu haben, wenn kein Fall korrekt ist. Und damit meine ich nicht, eine boolische Variable einzuführen, die dann in allen cases verändert wird.
3 Antworten
Hey du kannst einfach den "default" Case am Ende des Switch Case nutzen.
Der wird ausgeführt, falls die darüber liegenden Fälle alle nicht der fall sind.
Hier ein kleines Beispiel:
switch(i) {
case 42:
System.out.println("The 1st case is true");
break;
case 43:
System.out.println("The 2nd case is true");
break;
default:
System.out.println("No case is true");
}
Im Gegensatz zu anderen Fällen wird auch hier kein break benötigt.
Dafür gibt es den "default"-Case, um alle anderen Fälle abzufangen
switch(var) {
case 1:
// code
break;
case 2:
// code
break;
// ... weitere Cases
default: // wird ausgeführt, wenn kein sonstiger Case zutrifft
// code
}
default: .....