2017-10-18 16 views
-1

出力が4を出力する2.私は "y"が4である理由を理解していますが、なぜ "z"が2であるのか分かりません。 "z"の値を1増やすべきではありませんか?Java 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ループは2回実行されます – Lokesh

+0

'++'は一度もありません。 「z」は0で始まり、それは1 2回インクリメントされる。 – Oleg

+0

「z」は何を期待しましたか? –

答えて

0

最初の反復yは1であるので、2*y <= xが満足します。そして2*y 4とy= y*2あるため満足2であり、zは再び1
2*y<=xとなるy = y*2が8になるとz++出力4と2

-2

を得られた2
なる私は、プログラムにエラーが表示されません。ループは2回実行されます。

zは、になると、0+1=1になります。

2*Yは条件を満たさない8となり、最終的な出力はY4Z2であることであるべきです。

+0

Yは決して8になることはありません4 – Lokesh

+0

Sry私は2 * yが8になることを意味します –

0

ご協力いただきありがとうございました。私が作った間違いは、条件から "y"の値を取ってステートメント上でそれを使用することでした。つまり、y = 1 * 2で始めるのではなく、 、私はy = 2 * 2の2番目の反復で始めます。 "z"の値が1で、ループがそこで終わったと思います。ループ内での印刷の提案をありがとうございました。