Switch Anweisung

Win21

Mitglied
Hi, ich hätte mal ne Frage zum Thema Switch Anweisungen.
1.Also grundsätzlich kann man in einer Switch-Anweisung eine Andere Switch einbauen?
2.Und woran könnte es liegen, wenn bei einer Switch ein case nicht funktioniert, während andere funktionieren? Gibt es da bestimmte Normen oder Standardfehler?
 
Hallo dann zeige doch mal was da nicht geht.
hast du auch nach jedem case ein break gemacht.


Java:
switch(i){
        case 0:
            ...
            break;
        case 1:
            ...
            break;
        case 2:
            ...
            break;
       
        }
 
1.Also grundsätzlich kann man in einer Switch-Anweisung eine Andere Switch einbauen?

Probier es doch einfach aus. Wenn du gerade eine IDE griffbereit hast, ist grundsaetzliche Frage sehr schnell durch testen beantwortet. Ja, du kannst diese beliebig schachteln. Aber man muss bedenken dass die `case`s keine eigenen Bloecke sind. Das aeuszert sich vorallem beim deklarieren von Variablen:

Java:
switch (switchValue) {
    case 1:
        innerValue = false; // Kompilierungsfehler
        break;
    
    case 2:
        boolean innerValue = true; 
        break;
    
    case 3:
        innerValue = false; // Funktioniert
        break;
}

Das ergibt sich daraus weil dies keine Bloecke sind, sondern das switch als `goto`s realisiert wird. Im Groszen und Ganzen koennte man es als Map mit Sprungmarken ausdruecken. Das break dient dabei auch einfach nur als goto zum Ende des switch.
 
In modernen Java Versionen geht auch das:
Java:
switch (testvalue) {
        case case1 -> {
           
        }
        case case2 -> {
           
        }
        default -> {
           
        }
}
Damit entfallen die breaks und es entrpricht eher dem, was man von anderen Bedingungsauswertungen kennt.
Ein fallthrough lässt sich hiermit aber nicht realisieren, dafür muss man zur traditionellen Schreibweise greifen.
 

Zurück
Oben