Einfache Schleifen in Java
Ein Java Tutorial über einfache Schleifen - for-Schleife, while-Schleife, do-while-Schleife, verschachtelte Schleifen und ihre Anwendung.Tags: DO-WHILE-Schleife | FOR-Schleife | Java | Schleifen | Verzweigungen | WHILE-SchleifeWorum geht´s?
In diesem Java Tutorial geht es um einfache Schleifen in Java.
1. Was ist eine Schleife in Java?
Während eine Verzweigung den Fluss des Programms in mehrere „Abzweigungen“ führt, ist eine Schleife dazu da, den Fluss des Programms „im Kreis“ zu führen. Man kann also z.B. einen Teil des Programms 10 Mal durchführen lassen. Oder solange, bis der Benutzer eine bestimmte Zahl eingegeben hat.
Die drei wichtigsten Schleifen in fast jeder Programmiersprache sind dabei:
- while-Schleife
- do-while-Schleife
- for-Schleife
2. Die while-Schleife in Java
Eine while-Schleife ist eigentlich sehr ähnlich wie ein if aufgebaut.
Was eine while-Schleife von der if unterscheidet ist dass a) es keinen else-Block gibt und b) nach der schließenden }-Klammer des if-Blocks wieder von oben begonnen wird, und zwar so lange, wie die Bedingung erfüllt bleibt:
public class HelloWorld { public static void main(String[] args) { int a = 1; if (a <= 5) { System.out.println("Yehaa"); } while (a <= 5) { System.out.println("Yehaa"); } } }
Im obigen Code würde die Bedingung sowohl beim if-Block als auch beim while-Block true ergeben, der jeweilige Block also ausgeführt.
Aber während beim if-Block nur 1x „Yehaa“ ausgegeben wird, wiederholt sich das „Yehaa“ in der while-Schleife so lange, bis die Variable a nicht mehr kleiner als 5 ist.
Weil sich die Variable a innerhalb der Schleife nicht verändert und immer 1 bleibt, haben in diesem Fall eine sogenannte Endlos-Schleife produziert.
Damit das nicht passiert, müssen wir die Variable a innerhalb der Schleife verändern – zum Beispiel mit ++:
public class HelloWorld { public static void main(String[] args) { int a = 1; while (a <= 5) { System.out.println("Yehaa"); a++; } } }
Diese Schleife würde nur 5x durchlaufen, wobei die Variable a beginnend von 1 immer größer wird, bis sie 5 erreicht hat.
Die Ausgabe wäre also 5x ein „Yehaa“.
Sobald die Bedingung nicht mehr stimmt, wird der while-Block übersprungen, und das Programm läuft nach der }-Klammer ganz normal weiter.
Weil die Bedingung ja schon beim ersten Überprüfen false ergeben kann, kann es auch sein, dass eine while-Schleife kein einziges Mal ausgeführt wird.
3. Die do-while-Schleife in Java
Die do-while-Schleife sieht recht ähnlich aus wie die while-Schleife, hat aber einen entscheidenden Unterschied: Sie wird zuerst ausgeführt, und dann erst wird überprüft, ob sie nochmals ausgeführt werden soll.
Das bedeutet, dass sie immer mindestens 1x ausgeführt wird.
public class HelloWorld { public static void main(String[] args) { int a = 1; do { System.out.println("Yehaa"); a++; } while (a < 5); } }
Was aber bringt uns das?
Wenn wir beispielsweise Benutzer-Eingaben mit der Klasse Scanner in Java umsetzen wollen, dann können wir uns nicht darauf verlassen, dass der Benutzer intelligent und freundlich genug ist, auch das einzugeben, was wir von ihm brauchen (z.B. eine Zahl zwischen 1 und 10).
Mit Hilfe einer do-while-Schleife können wir ihn jedoch in eine Schleife „einsperren“, bis er eine Zahl zwischen 1 und 10 eingibt 🙂
Dasselbe geht zwar mit jeder Schleife, aber die do-while-Schleife hat einen Vorteil – hier der Unterschied in der Programmiersprache Java:
Scanner sc = new Scanner(System.in); int zahl; // WHILE-Schleife System.out.println("Gib eine Zahl zwischen 1-10 ein!"); zahl = sc.nextInt(); while (zahl < 1 || zahl > 10) { System.out.println("Gib eine Zahl zwischen 1-10 ein!"); zahl = sc.nextInt(); }
Scanner sc = new Scanner(System.in); int zahl; // DO-WHILE-Schleife do { System.out.println("Gib eine Zahl zwischen 1-10 ein!"); zahl = sc.nextInt(); } while(zahl < 1 || zahl > 10);
Im zweiten Code-Beispiel braucht man weniger Zeilen, um das Gleiche zu erreichen, weil man nicht die Eingabe doppelt braucht 🙂
Als Grundregeln kannst du dir merken: Immer bei Benutzer-Eingaben mit der Klasse Scanner verwendest du in Java die do-while-Schleife.
Die Feinheiten dazu findest du im Java Tutorial zum Scanner.
4. Die for-Schleife in Java
Die for-Schleife ist eigentlich eine Art „Abkürzung“ der while-Schleife. Auch sie kann im Extremfall gar nicht durchlaufen werden.
Hier unser klassisches Beispiel von vorhin, nur als for-Schleife realisiert:
public class HelloWorld { public static void main(String[] args) { for (int a = 1; a <= 5; a++) { System.out.println("Yehaa"); } } }
Vielleicht fällt dir auf, dass unser int a = 1; in die Schleife hineingerutsch ist, ebenso wie unser a++.
Eine for-Schleife ist gewissermaßen eine „zusammengeschobene“ while-Schleife.
Aber warum dann 2 verschiedene Schleifen, wenn sie doch ungefähr das Gleiche tun?
Das hat hauptsächlich Gründe der besseren Übersicht – was uns zum nächsten Kapitel bringt:
5. Wann du welche Schleife verwendest
Du verwendest eine do-while-Schleife, wenn du etwas mindestens 1x machen willst – einfach weil du dir dabei Schreibarbeit ersparst.
Du verwendest eine for-Schleife, wenn du im Vorfeld weißt, wie oft die Schleife durchlaufen werden soll. Zum Beispiel wenn du von 1×1 bis 10×1 rechnen willst und 10 Durchläufe haben willst.
Eine while-Schleife verwendest du dann, wenn du im Vorfeld nicht weißt, wie viele Schleifen-Durchläufe du haben wirst. Beispielsweise wenn du eine Datei Zeile für Zeile ausliest, bis die Datei aus ist.
Theoretisch kannst du zwar statt einer for-Schleife immer eine while-Schleife verwenden und umgekehrt (nicht aber eine do-while-Schleife, die funktioniert anders), aber wenn du dich an diese 3 Regeln hältst, sorgst du für mehr Übersicht in deinem Programmcode.
6. Was du als Bedingung in die ()-Klammern schreiben kannst
Alles, was die binäre Logik hergibt. Also alles, was du auch in if und else reinpacken kannst und am Ende true oder false als Ergebnis ergibt.
Ziemlich cool, oder?
Schleifen und if und else kannst du auch noch frei nach Wunsch ineinander verschachteln – und damit werden nun wirklich tolle Dinge möglich 🙂