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.