輸出打印4 2.我明白爲什麼「y」是4,但我很困惑爲什麼「z」是2.不應該++將「z」的值增加1?Java while while循環混淆輸出
int x = 6;
int y = 1;
int z = 0;
while (2 * y <= x) {
y = y * 2;
z++;
}
System.out.println(y + " " + z);
輸出打印4 2.我明白爲什麼「y」是4,但我很困惑爲什麼「z」是2.不應該++將「z」的值增加1?Java while while循環混淆輸出
int x = 6;
int y = 1;
int z = 0;
while (2 * y <= x) {
y = y * 2;
z++;
}
System.out.println(y + " " + z);
在第一次迭代中y爲1,因此滿足2*y <= x
。和y = y*2
其爲2和z變爲1
再次2*y<=x
滿足因爲2*y
是4和y= y*2
變爲8和z++
變爲2
結果輸出4和2
我沒有看到在程序中的任何錯誤。循環將運行2次:
首先,z
將是0+1=1
,之後它將是1+1=2
。
2*Y
8
變得不滿足條件,所以最終輸出應是Y
是4
和Z
是2
。
Y永遠不會成爲8它的價值將是4 – Lokesh
Sry我的意思是2 * y將8 –
謝謝大家的幫助,我一直在想。我一直在犯的錯誤是從條件中獲得「y」的價值,並在聲明中使用它。換句話說,不是從y = 1 * 2開始; ,我將開始第二次迭代y = 2 * 2;並認爲「z」的值是1並且循環在那裏結束。感謝c0der對循環內的打印輸出的建議。
while循環將執行兩次 – Lokesh
'++'不是一次性事物。 'z'從0開始,然後增加1 2次。 – Oleg
你期望'z'是什麼? –