Java 7 Grundkurs

Verzweigungen mit if

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um eine oder mehrere Anweisungen unter einer bestimmten Bedingung auszuführen, benötigen wir ein Verzweigungskonstrukt und dazu benutzen wir das auch aus anderen Programmiersprachen bekannte "if".
06:24

Transkript

Um eine oder mehrere Anweisungen nur unter einer bestimmten Bedingung auszuführen, benötigen wir ein Verzweigungskonstrukt. In Java heißt das, wie in vielen anderen Programmiersprachen auch, "if". Zur Demonstration verwenden wir dieses Autobeispiel. Ich habe hier eine Klasse "Auto"; dieses Auto kann man beschleunigen, und man kann es bremsen. In meiner Hauptklasse teste ich dieses Auto, indem ich zwei Autos erzeuge, ein bisschen beschleunige und bremse und schaue, was dabei herauskommt. Im Augenblick sieht das so aus: Das erste Auto beschleunigt zweimal und bremst einmal, fährt danach also erst 2, dann 1 km/h, und das zweite Auto beschleunigt dreimal und fährt danach dann 3 km/h. Nun ist die Implementierung unseres Autos noch recht simpel. Insbesondere wird beim Beschleunigen und beim Bremsen nicht getestet, ob irgendwelche Grenzwerte erreicht sind. Das kann zu unerwünschten Wirkungen führen. Nehmen wir z. B. das erste Auto: Ich beschleunige zweimal. Jetzt nehme ich das eine Beschleunigen raus und füge statt dessen noch ein Bremsen hinzu. Strg+Shift+Pfeil runter verdoppelt die Zeile. Wäre es ein richtig funktionierendes Auto, würden wir hier erwarten, dass es 1 km/h fährt, und nachdem ich zweimal auf die Bremse getreten habe, sollte es wieder still stehen. Das passiert aber nicht. Es fährt zwar erst 1 km/h, danach fährt es aber rückwärts. Das ist natürlich Quatsch. Um das zu beheben, können wir in die "Bremsen"-Methode eine bedingte Anweisung einfügen. Wir möchten sicherstellen, dass nach dem Bremsen die Geschwindigkeit nicht negativ ist. Also testen wir zuerst: Ist die Geschwindigkeit negativ, also ist sie kleiner als Null, und wenn ja, dann setzen wir die Geschwindigkeit auf Null. Das sieht folgendermaßen aus: Das Schlüsselwort heißt "if", danach folgt in runden Klammern die Bedingung, die erfüllt sein soll. In unserem Fall heißt die Bedingung "geschwindigkeit < 0". Dann eine geschweifte Klammer auf, und dieser Block, also das, was sich zwischen den geschweiften Klammern befindet, wird nun nur ausgeführt, wenn diese Bedingung erfüllt ist. In unserem Fall möchten wir hier die Geschwindigkeit auf Null setzen. Jetzt verhält sich die Anwendung auch wie gewünscht. Einer fährt 1 km/h, und danach fährt einer 0 km/h. Diese Bedingung zwischen den runden Klammern muss immer einen booleschen Wert ergeben, das heißt "true" oder "false". Wenn ich hier etwas Anderes einsetze, z. B. eine Zahl, dann führt das zu einem Compiler-Fehler. Wenn innerhalb des if-Blocks nur eine einzige Anweisung steht, dann ist es prinzipiell möglich, die geschweiften Klammern darum wegzulassen. Das sähe dann so aus: "{" weg, "}" weg. Funktioniert genauso. Es birgt allerdings eine kleine Gefahr. Das "if" bezieht sich ja nun nur auf die eine Anweisung, die sich direkt nach dem "if" befindet. Nun kommt z. B. ihr Kollege daher, fügt hier mal schnell eine Kontrollausschrift ein - so etwas hier -, führt das Programm aus, und es scheint alles zu funktionieren. Die Kontrollausschrift erscheint, und die Geschwindigkeit ist danach 0 km/h. Um Ihnen zu zeigen, dass nicht alles in Ordnung ist, gehe ich nochmal in unsere Main-Methode. Ich füge hier ein paar Zeilen hinzu, und zwar werde ich viermal beschleunigen und danach einmal bremsen. Wie schnell fährt das Auto? Einmal beschleunigen, zweimal bremsen, das Auto steht. Dann viermal beschleunigen, einmal bremsen: kommen wir also auf 3 km/h. Schauen wir, was passiert: Das Auto fährt 0 km/h. Warum? Die Bedingung bezieht sich nur auf diese eine Anweisung danach, d. h., diese Anweisung hier wird immer ausgeführt. Sprich, jedesmal, wenn Sie auf die Bremse treten, steht das Auto sofort. Dem Compiler ist es total egal, wie hübsch Sie das hier alles einrücken, solange Sie keine geschweiften Klammern drum setzen, ist das kein Block. Was der Compiler sieht, ist das hier. Hätten Sie geschweifte Klammern drum gesetzt, wäre das gar nicht erst passiert. Dann würde das so aussehen: Hier "Klammer auf", hier "Klammer zu", testen - und siehe da, jetzt funktioniert wieder alles. Nun gibt es noch eine Erweiterung des if-Statements, und zwar gibt es ein zweites Schlüsselwort, das heißt "else". Dieser erster Block hier wird ausgeführt, wenn die Bedingung erfüllt ist. Der zweite Block wird demzufolge ausgeführt, wenn die Bedingung nicht erfüllt ist. In unserem Fall also, wenn die Geschwindigkeit gleich oder größer Null ist. In unserem Programm müssen wir hier nichts tun. Um aber zu sehen, wenn dieser Block betreten wird, schreiben wir hier eine Kontrollausschrift rein, so etwas z. B. Wir führen das aus, und dann sehen wir: Einer fährt 1 kmh, wir bremsen, keine Korrektur nötig. Jetzt wird die Geschwindigkeit korrigiert, jetzt bremsen wir wieder und diesmal ist wieder keine Korrektur nötig. Für "else" gilt, was die Klammern hier betrifft, das Gleiche wie das schon beim "if" Gesagte: Sie können die Klammern prinzipiell weglassen, allerdings laufen Sie dann Gefahr, dass Sie eventuell später an dieser Stelle einen Fehler einbauen. Schließlich gibt es nun noch die Möglichkeit, dass Sie "if-else"-Ketten bauen. Das heißt, Sie testen eine Bedingung. Wenn die nicht erfüllt ist, dann testen Sie die nächste Bedingung, - da müsste jetzt irgendwas rein -, und wenn die nicht erfüllt ist, dann können Sie eine weitere Bedingung testen usw. Für solche Fälle gibt es kein extra Schlüsselwort, sondern Sie schreiben ganz normal ein "else", ein Leerzeichen und dahinter ein "if". In unserem Programmbeispiel gibt es jetzt dafür keine Anwendung, deshalb nehme ich das wieder raus. Sie haben gesehen, wie Sie mit "if" und "else" Anweisungen bedingt ausführen können, und Sie haben gesehen, wie Sie mit den geschweiften Klammern mehrere Anweisungen zu einem Block zusammenfassen können, um dann diesen Block bedingt auszuführen.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!