Mit if-else-Bedingungen werden in Java (und anderen Programmiersprachen) sogenannte Fallunterscheidungen realisiert.
Beispiel: Rechter Rand erreicht
if (xPosition > 250) rechterRandErreicht = true; else rechterRandErreicht = false;
Wenn die xPosition des Kreises den Wert von 250 überschritten hat, soll der rechte Rand der Zeichenfläche als "erreicht" gelten. Ist die xPosition NICHT größer als 250, so gilt der rechte Rand als NICHT erricht. Die Variable rechterRandErreicht (Datentyp boolean) erhält den Wert false.
Syntaxdiagramm
Hier sehen Sie ein Syntaxdiagramm der if-else-Anweisung. Ein Syntaxdiagramm ist eine graphische Darstellung des genauen Aufbaus bzw. Ablaufs einer solchen Anweisung. Der grüne Punkt bedeutet so viel wie "hier beginnen wir", der rote Punkt steht entsprechend für "hier ist die Anweisung zu Ende".
Als erstes kommt das Wort "if", das genau so und nicht anders geschrieben werden darf. "IF" oder "If" wären beispielsweise falsch geschrieben, und der Compiler würde eine Fehlermeldung produzieren.
Als Nächstes kommt eine logische Bedingung, die durch runde Klammern eingeschlossen werden muss. Die logische Bedingung in der if-else-Anweisung des obigen Quelltextes heißt beispielsweise:
differenz() < 0
Hier sehen wir übrigens ein weiteres Beispiel, wie sondierende Methoden aufgerufen werden können. Wenn der Rückgabewert der Methode kleiner ist als Null, dann ist die logische Bedingung erfüllt, andernfalls ist sie nicht erfüllt.
- Wenn die Bedingung erfüllt ist, so wird die Anweisungsliste ausgeführt, die direkt hinter der logischen Bedingung steht. In unserem Beispiel aus der Folge 3.3 handelt es sich dabei um die Ausgabe einer Zeichenkette wie "Sie sind zu leicht!".
- Ist die Bedingung dagegen nicht erfüllt, so wird die Anweisungsliste ausgeführt, die hinter dem Schlüsselwort else steht, in diesem Beispiel also die Ausgabe der Zeichenkette "Sie sind zu schwer!".
Eine der beiden Anweisungslisten wird auf jeden Fall ausgeführt. Entweder die eine, oder die andere.
Anweisungslisten
Eine Anweisungsliste kann leer sein, aus einer einzelnen Anweisung bestehen oder aus mehreren Anweisungen zusammengesetzt sein, die dann aber zwischen geschweiften Klammern stehen müssen.
Reihenfolge bei komplexeren if-else-Anweisungen
Welcher gravierender Fehler wurde bei folgender if-else-Anweisung gemacht:
if (diff > 1) System.out.println("Sie sind zu schwer!"); else if (diff > 10) System.out.println("Sie sind viel zu schwer!); else System.out.println("Sie sind nicht zu schwer!);
Angenommen, es wurde eine Differenz diff von 3 ermittelt. Dann trifft bereits die erste Bedingung diff > 1 zu, und es wird "Sie sind zu schwer!" ausgegeben, was ja auch korrekt ist.
Beim nächsten Programmdurchgang wird eine Differenz von 12 kg festgestellt. Auch dann trifft die Bedingungdiff > 1 zu, denn 12 ist eindeutig größer als 1. Also wird auch hier die erste Meldung ausgegeben und die if-else-Bedingung beendet. Diese Ausgabe war aber falsch. Eigentlich hätte "Sie sind viel zu schwer!" ausgegeben werden müssen.
Bei solchen mehrseitigen Auswahlen sollten Sie sich also vorher mit Bleistift und Papier klar machen, in welcher Reihenfolge sie welche Bedingungen überprüfen.
In unserem Beispiel hätte "absteigend" geprüft werden müssen. Also erst diff > 10, und wenn das nicht zutrifft diff > 1. Erst wenn auch das nicht zutrifft, ist der Mensch nicht zu schwer.
Warum es technisch möglich ist, mit Hilfe von einfachen if-else-Anweisungen eine dreiseitige Auswahl zu realisieren und weitere Einzelheiten erfahren Sie im Lexikonartikel "if-else-Anweisung".