Die if-Anweisung (wenn -> dann)

Oft soll ein bestimmter Programmteil nur ausgeführt werden, wenn eine Bedingung erfüllt ist, z.B.

  • Wenn ein Felsen das Raumschiff trifft, soll ein Leben abgezogen werden.
  • Wenn die Anzahl der Leben auf 0 sinkt, ist das Spiel beendet.

Für diese Zwecke gibt es die if-Anweisung.

Beispiel 1: PIN-Eingabe

Der Benutzer gibt eine PIN ein. Das Programm prüft, ob die PIN korrekt ist (1372) und gibt in diesem Fall „PIN korrekt!“ aus. Hier die Ausgaben zweier Programmläufe:

Geben Sie bitte Ihre PIN ein: 1221
Programmende.
Geben Sie bitte Ihre PIN ein: 1372
Die PIN ist korrekt!
Programmende.

Benutzereingaben

Die Anweisung int pe = Input.readInt(„Bitte geben Sie die PIN ein:“); nimmt vom Benutzer eine Zahl entgegen und legt sie in der Variable pe ab.

Detailinfo:
readInt ist eine statische Methode der Klasse Input. Mehr zu Klassen und statischen Methoden später!

Mit dem Schlüsselwort if weist man den Computer an, etwas nur dann zu tun, wenn eine bestimmte Bedingung erfüllt ist.

if (Bedingung) {
   // Anweisungen
}

führt die Anweisungen nur dann aus, wenn die Bedingung zutrifft (genauer: wenn der Term Bedingung den Wert true hat).

Erweiterung: Meldung bei Falscheingabe (else-Block)

Falls die falsche PIN eingegeben wird, soll eine entsprechende Meldung ausgegeben werden:

Geben Sie bitte Ihre PIN ein: 1221
Die PIN ist nicht korrekt!
Programmende.

Die if-Anweisung kann mittels else um einen weiteren Block ergänzt werden, der nur dann ausgeführt wird, wenn die Anweisung nicht zutrifft:

if (Bedingung) {
   Anweisungen für den Fall, dass die Bedingung zutrifft
} else {
   Anweisungen für den Fall, dass die Bedingung NICHT zutrifft
}
Kleine Aufgabe dazu

Erweitere das Programm, so dass es dem Benutzer drei Eingabeversuche zugesteht und jeweils ausgibt, wie viele Versuche er noch hat. Zwei mögliche Programmabläufe sehen also so aus:

Noch 3 Versuche
Sie haben eingegeben: 5654
falsche PIN!
Noch 2 Versuche
Sie haben eingegeben: 4432
falsche PIN!
Noch 1 Versuche
Sie haben eingegeben: 8983
falsche PIN!
Programmende.
Noch 3 Versuche
Sie haben eingegeben: 2674
falsche PIN!
Noch 2 Versuche
Sie haben eingegeben: 1372
Die PIN ist korrekt!
Programmende.

Hier geht's zur Lösung!

Beispiel 2: Teilbarkeit

Ob eine Zahl durch 2, 3, 4, 5 oder 9 teilbar ist, lässt sich durch einfache Teilbarkeitsregeln leicht ermitteln. Aber ist beispielsweise 534 durch 17 teilbar? Wir entwickeln ein kleines Programm, das uns hilft, das herauszufinden.

Der Modulo-Operator

Der Modulo-Operator ermittelt den Rest einer Division. Es ist beispielsweise 11 % 4 = 3, weil 11 beim Teilen durch 4 den Rest 3 lässt (11 = 4 * 2 + 3). In Java wird für denModulo-Operatordas Prozentzeichen '%' verwendet. Wenn wir also prüfen wollen, ob der Wert der Variable 'z' durch 17 teilbar ist (also beim Teilen durch 17 den Rest 0 lässt), schreiben wir:

if (z % 17 == 0) {
   println("Die Zahl ist in der Tat durch 17 teilbar!");
}

Bemerkung: Du erinnerst Dich sicher an den Vergleichsoperator '==' (nicht zu verwechseln mit dem Zuweisungsoperator '=').

Erweitere das Programm oben so, dass es prüft, ob die eingegebene Zahl durch 2, 3, 4, …, 10 teilbar ist und entsprechende Meldungen ausgibt.

Hier geht's zur Lösung!

Beispiel 3: Verbesserung der Einmaleinstabelle

Die Einmaleinstabelle aus dem Kapitel über geschachtelte Schleifen sah noch nicht perfekt aus, da die Zeilen in der Ausgabe unterschiedlich lang waren:

1 2 3 4 5 6 7 8 9 10 ​
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

Ihr seht sicher gleich, woran es liegt: Die einstelligen Zahlen sind nur halb so breit wie die zweistelligen. Wir können das Problem beheben, indem wir nach allen einstelligen Zahlen zusätzlich ein Leerzeichen ausgeben.