In diesem Beitrag werden wir in Java if Abfragen genauer unter die Lupe nehmen. if Abfragen sind extrem wichtig in der Programmierung, da sie dir eine Vielzahl an Möglichkeiten zum Entwickeln deiner Software bieten. Du wirst am Ende dieses Tutorials wissen, was if Abfragen sind, wie diese funktionieren und wie du sie in der Praxis für deine eigenen Projekte einsetzen kannst.
Inhaltsverzeichnis
1. Was wirst du in diesem Beitrag lernen?
Zunächst wirst du die sogenannten booleschen Ausdrücke kennenlernen. Diese unterscheiden sich etwas von den mathematischen Ausdrücken, die du bereits in den vorherigen Tutorials kennengelernt hast.
Danach werden wir uns in Java if Abfragen direkt in der Praxis ansehen und uns anschließend noch an die if-mit-else-Abfragen herantasten. Mit dem sogenannten else-Block erhalten wir eine Erweiterung zum if-Statement. Mehr dazu wirst du später erfahren.
2. Was ist ein boolescher Ausdruck?
Ein boolescher Ausdruck ist immer ein Vergleich, der als Ergebnis einen Wahrheitswert zurückliefert. Also entweder true oder false.
Bei den mathematischen Ausdrücken, die wir zuvor bereits kennengelernt haben, geht es im Prinzip darum, aus einer Berechnung einen Wert zurückzubekommen. Die Berechnung an sich stellt dabei den mathematischen Ausdruck dar.
Ein boolescher Ausdruck ist einfach ein Vergleich. Bei diesem findet also keine Rechnung statt. Dieser Vergleich kann als Ergebnis nur einen Wahrheitswert zurückliefern, da er entweder wahr oder falsch sein kann.
Wir benötigen diese booleschen Ausdrücke letztendlich dafür, um sogenannte Bedingungen zu formulieren.
3. Wozu brauchen wir Bedingungen?
Wenn du dich zurückerinnerst: Bisher haben wir lediglich Programme geschrieben, in welchen der Code innerhalb der Main-Methode von oben nach unten ausgeführt wird.
Mit den Java if Abfragen, die du gleich kennenlernen wirst, wird sich das Ganze schlagartig ändern, denn mithilfe derer können wir Bedingungen abfragen. Wenn eine Bedingung erfüllt ist oder nicht, entscheiden wir, welcher Codeblock daraufhin ausgeführt werden soll und was dadurch im Programm geschieht. Wir werden das Ganze gleich in der Praxis ausprobieren.
Diese booleschen Ausdrücke ermöglichen uns, Bedingungen zu formulieren. Genau aus diesem Grund ist es nötig, dass wir uns mit den sogenannten Vergleichsoperatoren vertraut machen.
4. Die Vergleichsoperatoren in Java
Bisher hast du in dieser Tutorialreihe nur die arithmetischen Operatoren zu Gesicht bekommen, aber die Vergleichsoperatoren sind auch relativ simpel. Vermutlich hast du davon bereits (damals) in der Schule gehört.
Der Kleiner-als-Operator (<)
In der ersten Zeile sehen wir den Kleiner-als-Operator (<).
Dieser gibt den Wahrheitswert true zurück, sobald die Zahl links davon kleiner als die Zahl rechts ist.
Im Beispiel sehen wir, „eins ist kleiner als sechs“, wodurch der Wert true herauskommt. Würde an dieser Stelle „sieben ist kleiner als sechs“ stehen, würde uns logischerweise false zurückgegeben werden.
Der Größer-als-Operator (>)
Das Gegenstück dazu ist der Größer-als-Operator (>). Diesen sehen wir in der zweiten Zeile der Abbildung.
Im Beispiel ist angegeben, dass 1 > 6 ist, was natürlich nicht stimmt und somit in false resultiert.
Würde dort stehen „6 > 1“ wäre das wiederum richtig. Das Ganze ist also sehr intuitiv anwendbar.
Die nachfolgenden Vergleichsoperatoren sind im Prinzip nichts anderes, nur dass bei diesen noch ein =-Zeichen dabei ist.
Der Kleiner-als-oder-gleich-Operator (<=)
Beim Kleiner-als-oder-gleich-Operator (<=) gibt es noch den Zusatz, dass true auch dann zurückgeliefert wird, wenn beide Zahlen gleich sind.
Auf das Beispiel bezogen bedeutet das: 4 <= 4 ergibt true und 3 <= 4 ist ebenfalls true.
Wenn hier stehen würde 5 <= 4, wäre das logischerweise false.
Der Größer-als-oder-gleich-Operator (>=)
Das Gegenstück hierzu ist der Größer-als-oder-gleich-Operator (>=).
Unser Beispiel 4 >= 4 ergibt true und genauso ist es bei 6 >= 4.
Zu guter Letzt haben wir noch den Gleich- und den Ungleichoperator.
Der Gleich-Operator (==)
Der Gleich-Operator (==) gibt nur true zurück, wenn die beiden Werte links und rechts gleich sind. Sind sie das nicht, wird false zurückgegeben.
Der Ungleich-Operator (!=)
Der Gegenpol zum Gleich-Operator ist der Ungleich-Operator (!=).
Wenn zwei Zahlen gleich sind, gibt dieser false zurück, sind sie hingegen ungleich, resultiert das in true.
Das waren also die Vergleichsoperatoren. Da wir diese nun kennengelernt haben, können wir zurück in unser Programm und uns in Java if Abfragen in der Praxis ansehen.
5. Java if Abfragen in der Praxis
Eine if Abfrage ist relativ schnell geschrieben. Das Ganze funktioniert folgendermaßen:
An erster Stelle benötigt man das Schlüsselwort if. Auf dieses Schlüsselwort folgt ein Klammerpaar, durch welches sich ein Codeblock öffnet.
if () {
}
Ein Codeblock wird immer durch geschweifte Klammern eingegrenzt und alles, was sich dazwischen befindet, gehört zu diesem Block.
Da wir gerade eine if Abfrage schreiben, bezeichnet man diesen Block als if-Block. Zwischen die runden Klammern gehört die Bedingung. Wir können also beispielsweise schreiben:
if (3 < 4) {
}
Wenn diese Bedingung erfüllt ist, möchten wir folgendes ausgeben:
if (3 < 4) {
System.out.println("Das ist korrekt!");
}
Jetzt führen wir das Programm einfach mal aus und wie du sehen kannst, wird „Das ist korrekt!“ tatsächlich ausgegeben:
Was ist hier genau passiert? Eine if-Abfrage funktioniert folgendermaßen. „if“ bedeutet ins Deutsche übersetzt „wenn“. Das heißt: Wenn die Bedingung zwischen den runden Klammern erfüllt ist, dann soll der Codeblock ausgeführt werden.
if (3 < 4) {
System.out.println("Das ist korrekt!");
}
Wenn die Bedingung allerdings nicht erfüllt ist und der Wahrheitswert bei diesem Vergleich false ergibt, dann führt das Programm den Codeblock nicht aus und es geht direkt unter diesem weiter.
if (3 < 4) {
System.out.println("Das ist korrekt!");
}
- hier geht es weiter -
Wir können das auch einmal testen, indem wir die Bedingung ändern:
if (5 < 4) {
System.out.println("Das ist korrekt!");
}
Diese Bedingung würde false zurückgeben. Wenn wir das Programm also ausführen, sehen wir, dass wir in der Konsole keine Ausgabe erhalten.
Das liegt daran, dass die Bedingung nicht erfüllt ist. Der Codeblock wird dadurch ausgelassen und da kein weiterer Code darunter steht, folgt auch keine Ausgabe.
Dieses Beispiel ist etwas merkwürdig, da man in der Regel zwischen die runden Klammern nicht irgendwelche Zahlen schreibt. Aus diesem Grund deklarieren wir uns jetzt eine Variable namens „age“ und initialisieren diese beispielhaft mit dem Wert 17.
int age = 17;
Danach schreiben wir den folgenden Code:
if (age > 17) {
}
Wenn age größer als 17 ist, dann ist die Person folglich mindestens 18 Jahre alt. Wir schreiben also in den Codeblock, der bei erfüllter Bedingung ausgeführt werden soll, folgendes:
if (age > 17) {
System.out.println("Dann darfst du das Computerspiel ab 18 Jahren kaufen!");
}
Wenn wir den Code jetzt ausführen, gibt uns das Programm logischerweise nichts aus, da wir der Variable age nur den Wert 17 zugewiesen haben. Die Person ist damit also erst 17 Jahre alt.
Wir können also beispielsweise ein Jahr dazurechnen lassen:
int age = 17;
age = age + 1;
Mit dieser Zeile sagen wir, dass der aktuelle Wert von age, der 17 ist, um eins erhöht werden soll. Dieser mathematische Ausdruck ergibt den Wert 18, welcher der Variable age zugewiesen wird.
Wenn wir das Programm ausführen, sehen wir, dass es funktioniert. Der Satz wird ausgegeben, weil die Bedingung nun wahr ist:
Das ist eigentlich auch schon der ganze Zauber der Java if Abfragen.
In der Bedingung können wir auch alle anderen Operatoren verwenden, die wir bereits kennen. Zum Beispiel den Gleich-Operator, den Ungleich-Operator oder den Größer-als-oder-gleich-Operator. Zur Übung könntest du selbst die Bedingung mit den unterschiedlichen Operatoren umformulieren und ausgeben lassen.
6. Die Java if-mit-else-Abfrage
Was ich dir an dieser Stelle noch zeigen möchte, ist die sogenannte if-mit-else-Abfrage. Diese ist im Prinzip eine Erweiterung zur if-Abfrage.
Man schreibt dazu nach der geschweiften Klammer else und setzt anschließend nochmals geschweifte Klammern.
if (age > 17) {
System.out.println("Dann darfst du das Computerspiel ab 18 Jahren kaufen!");
}
else {
}
Damit haben wir ein if-mit-else-Konstrukt erstellt. Das funktioniert auch relativ intuitiv:
Zuerst sagen wir „if“, also „wenn“ die Bedingung wahr ist, dann führe den nachfolgenden Code zwischen den geschweiften Klammern aus.
Falls die Bedingung falsch ist, führt das Programm den Code aus, der sich innerhalb des else-Blocks befindet.
Um das Beispiel sinnvoll zu erweitern, könnten wir zum Beispiel in den else-Block folgendes schreiben:
else {
System.out.println("Du darfst das Spiel leider nicht kaufen, da du zu jung bist.");
}
Führen wir das Programm jetzt noch einmal aus, dann sehen wir den Satz „Du darfst das Computerspiel ab 18 Jahren kaufen!“ in der Konsole.
Warum? Weil die Person gerade 18 ist. Wenn wir die Zeile age = age + 1; entfernen, ist die Person hingegen wieder 17. Beim Ausführen des Programms sehen wir dann in der Konsole die Ausgabe „Du darfst das Spiel leider nicht kaufen, da du zu jung bist.“
Und damit haben wir die Möglichkeit, in unserem Programm Verzweigungen einzubauen. Wenn also eine gewisse Bedingung erfüllt ist, können wir beispielsweise entscheiden, was ausgegeben oder berechnet werden soll.
Wir können dabei beliebig viele Anweisungen festlegen. Wenn die Bedingung nicht wahr sein sollte, führt das Programm eben den Code aus, der im else-Block steht. Benötigt man den else-Block nicht, kann man diesen auch einfach weglassen oder löschen.