输出打印出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);
答案 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
4
且Z
为{ {1}}。