Ich habe Probleme mit dem Erhalten, warum auch ein Teil des Code ausgeführt wird:Java: Probleme mit i ++
private int m;
private int n;
public void f() {
m = (m +2) % n;
System.out.print(m+"\n");
}
public void g() {
int i=0;
m=0;
n=8;
while (i++<n) {
System.out.print("i=" + i + " m=");
f();
}
}
Wenn ich g()
laufen, ich folgendes ausgedruckt bekommen:
i++=1 m=2
i++=2 m=4
i++=3 m=6
i++=4 m=0
i++=5 m=2
i++=6 m=4
i++=7 m=6
i++=8 m=0
Wie ich Verstehe es, die letzte Zeile sollte nicht erscheinen. Warum erhält f()
das letzte Mal?
Wenn f()
das erste Mal aufgerufen wird, i = 0
und dort für i++ = 1
. (so, wenn ich i
drucke, ist es bereits gleich 1
).
Wenn ich f()
das vorletzte Mal anrufen, i = 6
, und dort für i++ = 7
. Das ist das letzte ganze, das < n
(n = 8
) ist.
Warum wird die Funktion erneut aufgerufen, wenn i++
bereits = 8
ist? Das verwirrt mich wirklich.
Kennen Sie den Unterschied zwischen 'i ++' und '++ i'? Wenn nicht, recherchiere das, dann weißt du, warum dein Code so funktioniert. – Tom
Wie ist es möglich, solche Ausgaben zu erhalten? Kann nicht reproduzieren! – xenteros
@xenteros http://ideone.com/jr9QDr – Tom