Java - If-Anweisung/Switch-Anweisung transformieren

Neue Frage »

Auf diesen Beitrag antworten »
Groeten Java - If-Anweisung/Switch-Anweisung transformieren

Meine Frage:
Hallo!

Ist es immer möglich eine If(-Else)-Anweisung in eine Switch-Anweisung zu transformieren und bzw. oder umgekehrt?!

Meine Ideen:
Also ich bin bislang bei dem Schluss, dass es immer möglich ist IF in SWITCH (abgekürzt geschrieben...) zu transformieren, sofern die Variable bei SWITCH gültig ist (=> char, byte, short, int) , da die if bzw. if-else, bzw. else Anweisungen einfach zu case1, case2 etc. sowie default umgeschrieben werden können.

Von SWITCH nach IF jedoch würde ich sagen, dass es nicht immer möglich ist, da der sog. "Fallthrough" in IF so nicht umsetzbar ist.


Liege ich mit meinen Meinungen richtig?! smile




Danke & viele Grüße
 
Auf diesen Beitrag antworten »
3FingerbreitNougat RE: Java - If-Anweisung/Switch-Anweisung transformieren

Hallo LL,

Willkommen an Board =)

IF bietet insgesamt mehr Flexibilität und hat auch einen anderen Anwendungsbereich als switch. Bei SWITCH kann man nur 1 Kriterium nehmen, bei IF sind sogar ganze Ausdrücke möglich (z.B. Funktionen als Bedingung).

Zitat:
da der sog. "Fallthrough" in IF so nicht umsetzbar ist.

Normalerweise möchte man auch keinen Fallthrough und ich empfehle dir auch ohne dieses "Feature" zu programmieren, da schnell Fehler auftreten.


IF(-ELSE) -> SWITCH:
Ist nur möglich wenn die if-Anweisung sehr simple Bedingungen hat wie Zahlen vergleichen o.ä.
code:
1:
2:
3:
4:
5:
6:
7:
if (n==0) {
    foo();
} else if (n==2) {
    bar();
} else {
    foobar();
}
wird zu
code:
1:
2:
3:
4:
5:
6:
7:
8:
switch (n) {
case 0: foo();
        break;
case 2: bar();
        break;
default: foobar();
       break;
}

(Hier könnte man die letzte break-Anweisung weglassen, da default normalerweise ganz unten steht (wegen Fallthrough)).

SWITCH -> IF(-ELSE):
Immer möglich. Du schreibst dass man hier keinen Fallthrough hat. Das stimmt, aber diese sollte ohnehin vermieden werden! Der Fallthrouth ist meiner Meinung nach ein Fehler unsauberer Programmierung.

In anderen Worten: Anders als du schreibst ist eine Umschreibung von SWITCH -> IF(-ELSE) immer möglich, solange du den Fallthrough nicht "willst".

MfG
Auf diesen Beitrag antworten »
Groeten

Hey Kapitän... großes Grinsen


Ganz großes Danke für deine Erklärung!
Ist echt genial und beantwortet all meine Fragen!!! Daumen hoch



Grüße


PS: Bzgl. d. "Fallthrough": Würde den auch nicht direkt benutzen; bezieht sich hierbei auch nur auf reine, universitäre Theorie...
Auf diesen Beitrag antworten »
CookieMonsta

BTW:

code:
1:
2:
3:
4:
if (n==0) foo();
if (n==2) bar();


usw, wäre dann ein switch case ohne break anweisungen
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »