while schleife warum unendlich ?

kemre42

Mitglied
Hi Leute,
unszwar verstehe ich nicht warum die schleife endlos fortgeführt wird wenn ich das programm ausführe.
Theorethisch muss es doch bei 4 enden, tut es aber nicht :S.



class loop1 {
public static void main(String[] args) {
int i = 1;
boolean b = i < 5;
while (b = true) {
System.out.println(i);
i=i+1;
}
}
}
 
1. Den ersten Buchstaben von Klassen schreibt man groß:
Code:
Loop1
2.
Code:
while (b = true) {
zum vergleichen benutzt man
Code:
==
. Durch das
Code:
=
wird der Variable b pro Schleifendurchlauf immer der Wert true zugewiesen und die Bedingung ist immer true, da der
Code:
=
-Operator den neuen Wert der Variable zurückgibt.
3. Schreib in die Bedingung der while-Schleife nur
Code:
b
. b ist bereits ein boolean, du brauchst es nicht nochmal mit dem == Operator vergleichen welcher auch nur einen boolean zurückgibt...
4. Warum sollte die Schleife bei 4 enden?
Code:
i < 5
wird ein einziges mal bevor die Schleife überhaupt beginnt überprüft und ergibt true. Danach wird
Code:
i < 5
nie wieder abgefragt. Oder hast du gedacht der Wert von
Code:
b
würde sich auf magische Weise jedes mal ändern wenn sich i ändert? ^^
 
Zuletzt bearbeitet:
Nein. b ist immer true. Wie ich bereits geschrieben habe,
Code:
boolean b = i < 5;
wird nur ein einziges mal ganz am Anfang ausgeführt. Das innerhalb der Schleife
Code:
i
verändert wird hat KEINERLEI Auswirkungen auf
Code:
b
.
 
Wen du b durch eine Methode ersetzt, z.B.
Java:
boolean gibB (int i) { ... }
, sollte es funktionieren! Mir schwebt aber noch nicht vor, was du vor hast 😀 Tue was 😀

Gesendet mit Tapatalk 2
 

Zurück
Oben