输出打印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'是什么? –