Wie funktioniert diese FOR-SCHLEIFE (Java)?
Konkrete Frage lautet:
Wieso ist die Ausgabe nicht: 3, 7, 15, 31, etc...
Ich dachte i = i + i und danach immer +1.
Welche Rechenoperationen laufen genau ab?
2 Antworten
Start mit i = 1
Anweisung i += i
--> i=2
Ausgabe von i (2)
Anweisung i++
--> i = 3
Anweisung i += i
--> i = 6
Ausgabe von i (6)
usw.
Das freut mich!
War für mich auch immer am verständlichsten einfach Schritt für Schritt durchzugehen was der Code denn macht ^^
Jede For-Schleife lässt sich analog als while-Schleife schreiben.
for (statement1; statement2; statement3) {
// code
}
entspricht dieser while-Schleife:
statement1;
while (statement2) {
// code
statement3;
}
Konkret in deinem Fall wäre
for (int i = 1; i <= 1000; i++) {
i += i;
System.out.println(i);
}
äquivalent zu
int i = 1;
while (i <= 1000) {
i += i;
System.out.println(i);
i++;
}
i++, das dritte Statement im Schleifenkopf, wird also immer nach dem Schleifenkörper ausgeführt.
Tabellarisch sieht das so aus:
Wie du siehst, ist das Ende einer Zeile der Beginn der nächsten Zeile - außer am Anfang, da wird es halt auf 1 gesetzt.
Die erste Zeile im Schleifenkörper rechnet i += i, oder analog i *= 2 ... Der Wert von i vor der Ausgabe wird also immer verdoppelt (im Vergleich zum Beginn).
Dann geschieht die Ausgabe (Reihe "Syso" im Bild), und anschließend wird noch 1 addiert (durch das i++, Reihe "Ende" im Bild)
Danke, verständlichste Antwort!