Table of Contents

Schleifen / Loops

Schleifen sind grundlegende Kontrollstrukturen in der Programmierung, die es ermöglichen,

Sie sind besonders nützlich, um repetitive Aufgaben zu automatisieren und den Code effizienter und kompakter zu gestalten.

Es gibt verschiedene Arten von Schleifen, die in fast jeder Programmiersprache vorkommen:

for-Schleife

Eine for-Loop ist eine der grundlegendsten und am häufigsten verwendeten Kontrollstrukturen in Java.

Sie ermöglicht es, eine Anweisung oder einen Block von Anweisungen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist.

Die Syntax einer for-Loops in Java sieht folgendermaßen aus:

for (Initialisierung; Bedingung; Update) {
    // Codeblock, der wiederholt ausgeführt wird
}
Du siehst an der Farbe des Wortes, dass das for ein Java-Schlüsselwort ist. Es wird gefolgt von einem Block in runden Klammern: (initalization; condition; update). Was bedeutet das?

Hier nun ein konkretes Beispiel:

for (int i = 0; i < 10; i++) {
    System.out.println("Die aktuelle Zahl ist: " + i);
}
Kannst du erkennen, was die Schleife macht?

  1. Initialisierung: Wir deklarieren eine Variable i vom Datentyp int und weisen ihr den Startwert 0 zu.
  2. Bedingung: Wir sagen, dass die Schleife so lange laufen soll, wie diese Variable i kleiner als 10 ist. Aber wieso steht das denn infrage? 0 ist doch kleiner 10!? Ja, aber die Variable i wird aufgrund des Updates immer größer!
  3. Update: Die Zählvariable bekommt einen neuen Wert. In diesem Fall wird durch das i+++ die Variable i in jedem Durchlauf um 1 erhöht.

Deklaration und Initalisierung außerhalb des Schleifenkopfes

Nicht immer wird die Zählvariable im Schleifenkopf deklariert. Stell dir ein Programm vor, wo die Anzahl der Schleifendurchläufe vom Ergebnis einer vorherigen Berechnung abhängig ist:

int anzahlKinder = 3;
int anzahlErwachsene = 12;
int anzahlPersonen = anzahlKinder + anzahlErwachsene;
for (; anzahlPersonen < 10; anzahlPersonen++) {
    System.out.println(anzahlPersonen);
}
Hier wird im Schleifenkopf ganz darauf verzichtet, eine Zählvariable zu deklarieren und initalisieren. Es wird einfach die Variable anzahlPersonen verwendet, die außerhalb der Schleife deklariert und berechnet wurde.

while-Schleife

while-Loops sind wie bereits erwähnt, flexibler bei einer unbekannten Zahl von Iterationen. Das kann passieren, wenn eine Menge von Einträgen zu durchlaufen sind, wir aber nicht wissen, wie viele genau das sein werden.

Anders als bei der for-Loop wird diesmal nähmlich keine Zählvariable deklariert und initialisiert. Falls wir eine solche Variable haben wollen, müsste diese von außen beigesteuert werden.

Eine while-Loop checkt vielmehr oftmals, ob bestimmte Bedingungen noch wahr sind, ob sich beispielsweise Zustände geändert haben, oder nicht.

        Scanner scanner = new Scanner(System.in);
        String input = "";
 
        while (input.equals("exit") == false) {
            System.out.println("Gib 'exit' ein, um die Schleife zu beenden:");
            input = scanner.nextLine();
        }
 
        scanner.close();
        int i = 0; // Initialisierung der Variablen
        while (i < 5) { // Bedingung prüfen
            System.out.println(i); // Schleifen-Körper
            i++; // Variablen aktualisieren
        }

do-while-Schleife

Die do-while-Schleife ist eine Kontrollstruktur in Java, die sich perfekt für Situationen eignet, in denen eine Aktion mindestens einmal ausgeführt werden soll, bevor eine Bedingung überprüft wird.

Merkmale der do-while-Schleife

Syntax:

do {
    // Code, der mindestens einmal ausgeführt wird
} while (Bedingung);

Beispiel Würfelspiel

Stell dir ein Würfelspiel vor. Es soll so lange gewürfelt werden, bis eine 6 gefallen ist.

Das ist der klassische Use-Case für eine do-while:

import java.util.Random;
 
public class WuerfelSpiel {
    public static void main(String[] args) {
        Random random = new Random();
        int wurf;
 
        System.out.println("Würfel wird geworfen...");
 
        do {
            wurf = random.nextInt(6) + 1; // Zufallszahl zwischen 1 und 6
            System.out.println("Geworfen: " + wurf);
        } while (wurf != 6);
 
        System.out.println("Eine 6 wurde geworfen! Spiel beendet.");
    }
}