我不明白为什么for循环运行两次,要打印的第一个值应为2,最后一个值应为16而不是4,因为4仍小于10
我做了一个for循环,将初始值增加一个,但是我没有尝试通过将初始值乘以第一个值来增加初始值
for (int i = 2; i <10; i = i*i) {
System.out.println(i);
}
我希望它可以运行4次,但仅运行2次
答案 0 :(得分:8)
您的循环与此等效:
int i = 2; // Initializer
while (i < 10) // Condition
{
System.out.println(i);
i = i * i; // Update part
}
请注意,当i
为10或更大时,它将永远不会进入循环的 body ,因此它将永远不会输出16。
换句话说,执行看起来像这样:
i
设置为2。i
是否小于10?是的,所以输入循环的主体。i
。i = i * i
,现在是4。i
是否小于10?是的,所以输入循环的主体。i
。i = i * i
,现在是16。i
是否小于10?不,结束。答案 1 :(得分:5)
使用纸和笔轻松查找代码在做什么...
first run, i = 2 -> i < 10 == true -> print 2
second run, i = 2*2 = 4 -> i < 10 == true -> print 4
third run, i = 4*4 = 16 -> i < 10 == false -> out
答案 2 :(得分:2)
我试图解释其工作原理。
1) You initialized variable i = 2
2) Check i < 10
3) Print(i) = 2
---下一个----
1) i = i*i (2*2) = 4
2) Check i < 10 = 4<10 = true
3) Print(i) = 4
---下一个----
1) i = i*i (4*4) = 16
2) Check i < 10 = 16<10 = false
3) EXIT
答案 3 :(得分:1)
第一次i = 2
,循环运行
第二次i = 4
,循环执行了
i = 16
第三次,循环失败=>中断
欢迎来到stackoverflow。对于这些情况,您应该学习调试代码以更好地自我理解
答案 4 :(得分:1)
您正在平方。 2,4,16,但16大于i <10,所以它不这样做
答案 5 :(得分:1)
由于i = i*i
i = 2
1. i = 2*2 = 4 (4 < 10)
2. i = 4 * 2 = 8 (8 < 10)
3. i = 8 * 2 = 16 (16 > 10)