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
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
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
}
![](https://images.gutefrage.net/media/user/TechPech1984/1632773764038_nmmslarge__12_0_519_519_b8bdbc8023c4e7722d66db9f2af2d5fd.png?v=1632773764000)
default: .....