Navigation überspringen

if / else - statement

Beabsichtigte Lernziele

Im einfachsten Gedanken übersetzen wir wörtlich zu wenn ... sonst ... . Dadurch ist das wesentliche bereits gesagt. Die Programmabfolge wird angewiesen, etwas zu tun, wenn vorher etwas wahr ist, sonst soll etwas anderes passieren:

Die (Bedingung) nach der Einleitung if, wird nur auf zwei Zustände abgefragt: wahr (engl. true) oder falsch (engl. false)! Ist die Bedingung vollständig wahr, tritt die unmittelbar nachfolgende Anweisung ein, ist die Bedingung (auch teilweise!) unwahr die nach else folgende Anweisung, siehe Abbildung oben. 

Beispiel:

Die Besucher einer Bar müssen mindestens 21 Jahre alt sein!

if (age >= 21) {
    System.out.println("Lass ihn/sie rein!");
}else{
    System.out.println("Lass ihn/sie draussen!");
}

 Hinweis:

In Zeile 21 wird ein Vergfleichsoperator verwendet. Dieser Operator ist gleichbedeutend mit der folgenden Lösung:

if (age > 20) {
    System.out.println("Lass ihn/sie rein!");
}else{
    System.out.println("Lass ihn/sie draussen!");
}

 Beide Bedingungen schließen das Alter 21 Jahre mit ein. Weitere Details finden sich im Abschnitt Operatoren.

Erweitern wir das Beispiel zu der neuen Bedingungsfolge:

Die Besucher einer Bar müssen mindestens 21 Jahre alt sein und dürfen nicht "Doofmann" heißen oder betrunken sein!

if (age >= 21 && name != "Doofmann" && !betrunken) {
    System.out.println("Lass ihn/sie rein!");
} else {
    System.out.println("Lass ihn/sie draussen!");
}

Lösung:

Die Bedingungen lassen sich durch das logische UND und logische OR kombinieren. Weiterhin kommt die Negation "!" hinzu. Sie dreht die Teil-Bedingung bevor die Gesamt-Bedingung ermittelt wird um, vgl. Zeile 1 im obigen Beispiel.

ACHTUNG: Dangling-else-Problem

Das Dangling-else-Problem (wo-gehört-das-else-denn-hin) läßt sich vollständig vermeiden.

Beispiel:

if (age >= 21 && name != "Doofmann") 
    System.out.println("Schritt eins geschafft!");
    if (!betrunken) 
        System.out.println("Lass ihn/sie rein!");
else 
    System.out.println("Nicht alt genug? Oder Betrunken?");

Java fügt das else dem inneren if zu.

Mit Hilfe von Blöcken umgehen wir diese Problemation. In Java werden Blöcke in geschweifte Klammern gesetzt.

if (age >= 21 && name != "Doofmann") {
   System.out.println("Schritt eins geschafft!");
   if (!betrunken) {
      System.out.println("Lass ihn/sie rein!");
   } else {
      System.out.println("Betrunken geht gar nicht!");
   }
}else{
   System.out.println("Du bist ein 21 jähriger Doofmann!");
}