2017-10-18 210 views
-1

輸出打印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); 
+0

while循環將執行兩次 – Lokesh

+0

'++'不是一次性事物。 'z'從0開始,然後增加1 2次。 – Oleg

+0

你期望'z'是什麼? –

回答

0

在第一次迭代中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

我沒有看到在程序中的任何錯誤。循環將運行2次:

首先,z將是0+1=1,之後它將是1+1=2

2*Y8變得不滿足條件,所以最終輸出應是Y4Z2

+0

Y永遠不會成爲8它的價值將是4 – Lokesh

+0

Sry我的意思是2 * y將8 –

0

謝謝大家的幫助,我一直在想。我一直在犯的錯誤是從條件中獲得「y」的價值,並在聲明中使用它。換句話說,不是從y = 1 * 2開始; ,我將開始第二次迭代y = 2 * 2;並認爲「z」的值是1並且循環在那裏結束。感謝c0der對循環內的打印輸出的建議。