While Schleife

Video

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.

YouTube immer automatisch laden
Inhaltsverzeichnis
Als Text lesen

Stell dir vor du möchtest 1000 Zeilen auf der Konsole ausgeben. Dafür bräuchtest du 1000 Zeilen Code, in denen jeweils immer der gleiche Befehl steht. Das wäre ziemlich dämlich, oder?

Für Probleme dieser Art gibt es Schleifen, die die gleiche Abfolge von Statements wiederholt ausführen. Eine dieser Schleifen ist die while-Schleife:

while (BEDINGUNG) {
// Das was wiederholt ausgeführt werden soll
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

while-Schleifen funktionieren ähnlich wie if-Abfragen, nur mit dem Unterschied, dass nach Ausführung des inneren Blocks erneut die Bedingung überprüft wird. Der Inhalt der while-Schleife wird also ausgeführt, solange die Bedingung wahr ist.

Schauen wir uns diesen Code an:

int i = 0;
while (i < 3) {
System.out.println(i);
i = i + 1;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Folgende Dinge passieren:

  • Im ersten Durchlauf ist i == 0, was kleiner als 3 ist. Also wird der Schleifenblock ausgeführt. Auf der Konsole erscheint 0 und i wird auf 1 erhöht.
  • Im zweiten Durchlauf ist i == 1. 1 ist kleiner als 3, also wird 1 ausgegeben und i auf 2 erhöht.
  • Im dritten Durchlauf ist i == 2, was immer noch kleiner als 3 ist. Ausgabe: 2, i wird auf 3 gesetzt.
  • Im vierten Durchlauf ist i == 3. Da 3 nicht kleiner ist als 3, ist die Bedingung der while-Schleife nicht mehr erfüllt. Das Programm springt zum Ende der Schleife.

Die Ausgabe ist also:

0
1
2

Falls die Bedingung einer while-Schleife immer wahr ist, wird das Programm sich nicht selbst beenden.* Man spricht dann davon, dass das Programm nicht terminiert. Stattdessen wird es so lange weiter laufen, bis es durch einen anderen Prozess beendet wird.** Es kann durchaus gewünscht sein, dass ein Programm "unendlich" lange läuft. Beispielsweise ein Server, der auf Anfragen wartet, sollte sich (im Normalfall) nicht nach Bearbeitung einer einzigen Anfrage beenden, sondern auf weitere warten.

*Es gibt trotzdem noch Möglichkeiten, ein solches Programm zu beenden. Wir ignorieren das an dieser Stelle aber.

**Hier im Online-Editor gibt es aber trotzdem Limits, wie lange ein Programm maximal laufen darf, und wie viele Zeilen maximal ausgegeben werden können.

In dieser Aufgabe sollst du alle Vielfachen einer gegebenen Zahl n bis zu einem gewissen Maximum max auf der Konsole ausgeben. Beispielsweise sollen für die Eingabe n = 7 und max = 21 zeilenweise 7, 14, und 21 ausgegeben werden.

Online Editor

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.

Online Editor immer automatisch laden

Bonus

Teste was passiert, wenn n kleiner ist als 1. Wie könntest du dieses Problem beheben?

Häufige Fehlerquellen
  • Semikolon... du weißt schon
  • Mit falscher Zahl begonnen: Die erste auszugebende Zahl ist n
  • Maximum falsch: Falls max durch n teilbar ist, soll max die letzte Zahl sein, die ausgegeben wird. Du musst also mit <= vergleichen.
  • Schrittweite falsch: Nach jedem Schleifendurchlauf muss die nächste Zahl genau n größer sein als die aktuelle
Lösungsvorschlag
public class Multiples {
public static void main(String[] args) {
// Zahl, deren Vielfache ausgegeben werden sollen
int n = 7;
// Höchste Zahl, die ausgegeben werden könnte
int max = 50;
// Überprüfen ob n positiv ist
if (n < 1) {
System.out.println("n muss positiv sein");
} else {
int i = n;
while (i <= max) {
System.out.println(i);
i = i + n;
}
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dir gefällt meine Arbeit?

Unterstütze Mich
AllgemeinSocialRechtliches
HomeInstagramDatenschutz
ÜberYouTubeImpressum
TikTok
Ko-fi

Made with love by a former noob.

© 2022-2024 Timo Friedl