Java while循环混淆输出

时间:2017-10-18 03:27:17

标签: java loops while-loop

输出打印出4 2.我理解为什么" y"是4但是我很困惑为什么" z"是2.
不应该增加" z"的值。一个人?

int x = 6;
int y = 1;
int z = 0;

while (2 * y <= x) {
    y = y * 2;
    z++;
}
System.out.println(y + " " + z);

3 个答案:

答案 0 :(得分:1)

谢谢大家的帮助,我一直在想。 我一直犯的错误是从条件中取出“y”的值并在声明中使用它。
换句话说,而不是从y = 1 * 2开始; ,我会从y = 2 * 2的第二次迭代开始;并且认为“z”的值为1并且循环在那里结束 谢谢c0der关于循环内打印输出的建议。

答案 1 :(得分: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)

我没有看到程序中的任何错误。循环将运行2次:

首先,z将为0+1=1,之后将为1+1=2

2*Y变为8且不满足条件,因此最终输出应为Y 4Z为{ {1}}。

相关问题