Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Java - If-Anweisung/Switch-Anweisung transformieren » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Java - If-Anweisung/Switch-Anweisung transformieren
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Groeten
unregistriert
Java - If-Anweisung/Switch-Anweisung transformieren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
22.07.2010 18:45
3FingerbreitNougat
unregistriert
RE: Java - If-Anweisung/Switch-Anweisung transformieren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
22.07.2010 19:46
Groeten
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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...
23.07.2010 15:38
CookieMonsta
Jungspund


Dabei seit: 09.06.2010
Beiträge: 16

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

BTW:

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


usw, wäre dann ein switch case ohne break anweisungen

__________________
mhhhh... cookies!
24.07.2010 11:44 CookieMonsta ist offline Beiträge von CookieMonsta suchen Nehmen Sie CookieMonsta in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Java - If-Anweisung/Switch-Anweisung transformieren