Eine Verzweigung legt fest, welcher Programmabschnitt unter welcher Bedingung ausgeführt wird. Es gibt dabei if else
- if
else if
else
- und switch
-Verzweigungen.
Arten von Verzweigungen in Java
Du kannst dir eine Verzweigung folgendermaßen vorstellen:
„Wenn ich jetzt anfange zu lernen, dann bekomme ich eine 1. Ansonsten wird es eine schlechtere Note.“
Diese Verzweigung hat also eine Bedingung - das Lernen - und wenn sie erfüllt ist, bekommt Jan das eine Ergebnis - eine Eins - und wenn er die Bedingung nicht erfüllt, das andere - eine schlechtere Note.
Genau so kannst du dir auch Verzweigungen in Java vorstellen. Hierbei gibt es jedoch verschiedene Arten von Verzweigungen:
- if, else-Verzweigung
- if, else if, else-Verzweigung
- switch case
if, else
Bei der if else-Verzweigung gibt es genau zwei Programmabschnitte, die je nach Erfüllung der Bedingung ausgefürt werden können.
Schau dir erst einmal den Aufbau einer if - else-Verzweigung an:
Besuche die App, um alle Inhalte zu sehen!
Der if-Teil besteht aus dem Keyword if
, einer Klammer mit einer Bedingung als Inhalt und geschweiften Klammern.
Innerhalb dieser steht der Programmabschnitt, der ausgeführt werden soll, wenn die if-Bedingung erfüllt ist, also zu true
ausgewertet wird.
In diesem Fall soll getAnA
(bekomme eine Eins) auf true
gesetzt werden .
Merk dir also: Der if
-Teil wird nur dann ausgeführt, wenn die Bedingung zu true
ausgewertet wird!
Der else
-Teil hingegen enthält keine Bedingung. Er wird immer dann ausgeführt, wenn die if
-Bedingung zu false
ausgewertet wird. Auch im else
-Teil ist ein Programmabschnitt enthalten, der dann ausgeführt wird.
Schau dir das nochmal bei folgender Grafik an:
Die if
else
-Verzweigung wird gestartet. Es wird die Bedingung A überprüft. Wenn sie true
ist, dann wird Programmabschnitt B ausgeführt. Wenn sie false
ist, dann Programmabschnitt C. Danach ist die if
else
-Verzweigung zu Ende.
Der if
-Teil kann übrigens auch alleine stehen, wenn eine Bedingung überprüft und, wenn diese nicht eintrittt, nichts weiter passieren soll. Dann wird der Programmcode einfach weiter durchlaufen:
Besuche die App, um alle Inhalte zu sehen!
Wenn die Tage bis zur Klausur null sind, dann lohnt es sich auch nicht mehr, mit dem Lernen anzufangen, daher wird hier kein else
-Teil benötigt.
if, else if, else
Die if, else if, else-Verweigung ist sehr ähnlich zur if, else-Verzweigung. Sie hat auch einen if
- und einen else
-Teil. Zusätzlich hat sie jedoch noch einen else if
-Teil. Dieser wird verwendet, wenn noch eine Bedingung mehr überprüft werden soll, wie im folgenden Beispiel:
Besuche die App, um alle Inhalte zu sehen!
In diesem Fall interessiert es Jan zusätzlich, welche Note er überhaupt noch erreichen kann, wenn er nur noch vier Tage bis zur Klausur hat.
Wenn er zwar noch nicht lernt, aber noch fünf Tage bis zur Klausur hat, kann er noch eine Zwei schaffen. Da er jedoch nur noch vier Tage hat, wird es wahrscheinlich eine Drei oder schlechter.
switch case
Stell dir vor, Jan möchte jetzt nicht nur wissen, dass er eine Drei oder schlechter bekommt, wenn er nur noch zwei Tage zum Lernen hat, sondern die genaue Note. Da das ganz schön viele else if
-Fälle werden würden, gibt es für solche Fälle den switch case. Beim switch case werden alle aufgestellten Bedingungen nach und nach durchlaufen, bis entweder eine Bedingung erfüllt oder die ganzen Fälle (cases) durchlaufen sind:
Besuche die App, um alle Inhalte zu sehen!
Jan hat sich nun mithilfe einer switch-Verzweigung genau aufgeschlüsselt, welche Note er bekommen würde, wenn er noch sechs, fünf, vier, drei, zwei oder einen Tag zum Lernen hat.
Eine switch-Verzweigung besteht dabei immer aus einem Kopf und einem Rumpf.
Im Kopf steht der Name der Methode, hier also switch
. Danach folgen runde Klammern, in dem Parameter, die geprüft werden sollen, übergeben werden. Darauf folgen wie immer geschweifte Klammern.
Innerhalb dieser Klammern ist der Rumpf der Methode. Hier stehen die verschiedenen Fälle, die überprüft werden sollen. Sie sind gekennzeichnet mit dem Keyword case
. Hinter jedem case
folgt der Wert, mit dem der übergebene Parameter verglichen werden soll.
Stimmen sie überein, wird der Code im Rumpf des jeweiligen Falles ausgeführt.
Stimmen sie nicht überein, wird der nächste Fall überprüft.
Wenn alle Fälle überprüft wurden und keiner zutreffend war, wird der default
-Teil ausgeführt.
In jedem case
-Teil der Methode steht hinter den Anweisungen das Keyword break
. Das ist wichtig, da dadurch nach Ausführen der Anweisungen des jeweiligen Falles nicht noch mögliche weitere Fälle überprüft werden. Auch der default
-Teil enthält aus Robustheitsgründen einen break
.
Im Beispiel von Jan hat er noch vier Tage zum Lernen. Daher wird case 6
, case 5
und case 4
überprüft. Bei case 4
werden aufgrund der Übereinstimmung mit daysTillExam
die Anweisungen ausgeführt. Hier wird also „Ich bekomme eine 3!“ auf die Konsole ausgegeben. Danach folgt das break
-Argument, die Überprüfung bricht also an dieser Stelle ab.
Neben int
kann auch ein String
-Parameter mit verschiedenen Fällen verglichen werden. Jedoch funktioniert das Ganze nicht bei boolschen Ausdrücken, wie daysTillExam > 4
.
Eine weitere Eigenschaft der switch-Cases ist, dass mehrere Fälle zusammengefasst werden können, wenn sie dieselben Anweisungen enthalten würden:
Besuche die App, um alle Inhalte zu sehen!
Wenn Jan hier noch acht, sieben oder sechs Tage zum Lernen hätte, würde er bei jedem dieser Fälle eine Eins bekommen, daher kann er diese Fälle zusammenfassen.
Beispiel
Jan und seine Freunde und Freundinnen möchten zum lang ersehnten Camping-Ausflug starten. Eine Sache muss jedoch vorher noch überprüft werden:
Besuche die App, um alle Inhalte zu sehen!
Jan, Nicole und Jeremiah haben schon richtig Lust auf den Campingausflug. Jedoch ist ihr neues E-Auto nur 20% geladen. Das Auto muss also erstmal geladen werden. Da die Ladezeit sehr lange dauert, kann der Trip nicht direkt starten und sie haben dadurch keine Zeit mehr, vor der Abreise mit dem Auto nochmal einkaufen zu gehen. Sie haben jetzt also keine Verpflegung, aber da sie in der Wildnis campen, werden sie schon hoffentlich irgendwas Essbares finden.