为什么for循环只运行两次

时间:2019-04-17 11:19:45

标签: java

我不明白为什么for循环运行两次,要打印的第一个值应为2,最后一个值应为16而不是4,因为4仍小于10

我做了一个for循环,将初始值增加一个,但是我没有尝试通过将初始值乘以第一个值来增加初始值

for (int i = 2; i <10; i = i*i) {

   System.out.println(i);

}

我希望它可以运行4次,但仅运行2次

6 个答案:

答案 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)