Die while-Schleife führt wiederholt Anweisungen nach Prüfung einer Bedingung aus.
Der Kopf einer while-Schleife besteht aus dem Schlüsselwort
while
gefolgt von einer in runden Klammern
notierten boolschen Abbruchbedingung. Der darauf folgende in
geschweiften Klammern notierte Schleifenkörper enthält
eine beliebige Anzahl an Anweisungen, die wiederholt
nacheinander so lange ausgeführt werden, bis die im Kopf
notierte Abbruchbedingung false
liefert.
Wird in einer for-Schleife zur
Definition der Abbruchbedingung üblicherweise eine
Zählvariable verwendet, so kann eine while-Schleife auch
ohne diese notiert werden.
Wird jedoch eine Zählvariable
verwendet, so muss diese im Gegensatz zur for-Schleife vor der
Schleifendeklaration erzeugt und initialisiert werden. Ihr
Inkrementieren oder Dekrementieren geschieht dann
üblicherweise während oder nach Ausführung der
innerhalb des Schleifenkörpers notierten Anweisungen.
Da die Abbruchbedingung im Schleifenkopf notiert wird und somit
vor Ausführung des ersten Schleifendurchlaufs
überprüft wird, spricht man von einer kopfgesteuerten
Schleife. Dies bewirkt, dass die in der Schleife notierten
Anweisungen nur ausgeführt werden, wenn die
Abbruchbedingung bei Erreichen der Schleife true
ergibt. Ist dies nicht der Fall, so wird die komplette Schleife
übersprungen.
Das 'Gegenmodell', die fußgesteuerte
Schleife, ist die do-while-Schleife,
bei der die Anweisungen mindestens ein Mal ausgeführt
werden.
public class WhileClass {
public void gibAus(){
int i=0;
while(i<10){
System.out.println(i);
i++;
}
}
public static void main(String[] args){
WhileClass wc = new WhileClass();
wc.gibAus();
}
}
Häufige Fehler
Bei Unachtsamkeit können sich bei Nutzung der
while-Schleife leicht Fehler einschleichen: Fehlt die
Abbruchbedingung, wird diese niemals false
oder
fehlt die Änderung der Zählvariablen, entsteht
möglicherweise eine Endlosschleife, die das Programm zum
Absturz bringen oder 'einfrieren' kann.
Einige typische Fehler:
-
Der in der Abbruchbedingung abgefragte Wertebereich wird nie erreicht:
int i=0; while(i>100) { //... ++i; }
-
Das Inkrement fehlt:
int i=0; while(i<100) { //... }
-
Die Abbruchbedingung ergibt immer
true
int i=0; while(true) { //... ++i; }
-
Die Zählvariable wird (aus Versehen) immer wieder zurückgesetzt:
int i=0; while(i<100) { //... ++i; //... i=0; }
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.