【问题标题】:Beginner java for-loop初学者java for循环
【发布时间】:2015-05-03 22:42:45
【问题描述】:

这段代码:

for(int i=5; i<50; i=i*2){ 
} 

为什么它循环 4 次而不是 3 次?我认为它是 5x2 which = 10,然后是 10 x 2 which = 20,然后是 20 x 2 which = 40,然后因为 40 x 2 大于 50 而停在那里。

【问题讨论】:

  • 您错过了第一次执行。它以5 开头并检查5 &lt; 50。然后它继续执行,完成后它检查5*2 &lt; 10,执行等等。

标签: java loops for-loop


【解决方案1】:

打印数字:

for (int i = 5; i < 50; i = i * 2) {
    System.out.println(i);
}

输出:

5
10
20
40

所以当i == 5 时你错过了第一次迭代。

顺便说一句,i = i * 2 可以写成i *= 2

【讨论】:

    【解决方案2】:

    第一次执行使用分配的值i。它仅在执行后迭代。所以它会在你列出的 3 次之前运行一次。

    【讨论】:

      【解决方案3】:

      在第一次迭代中,i5

      第二次循环,i10

      第三次i20

      第三次迭代后i40i 已经通过 50 了吗?没有。

      第四次迭代后i80,我们退出循环。

      这会进行 4 次迭代。

      【讨论】:

        【解决方案4】:

        好吧,开始:

        if i < 50 --> do a iteration
        

        i=5 --> 小于 50 --> 第一个循环;

        现在增加i --> i = i*2 --> i = 5*2 = 10

        i=10 --> 小于 50 --> 第二个循环;

        现在增加i --> i = i*2 --> i = 10*2 = 20

        i=20--> 小于50 --> 第三个循环;

        现在增加i --> i = i*2 --> i = 20*2 = 40

        i=40 --> 小于 50 --> 第四次循环;

        现在增加i --> i = i*2 --> i = 40*2 = 80

        i=80 --> 大于 50 --> 停止

        【讨论】:

          猜你喜欢
          • 2016-01-05
          • 1970-01-01
          • 2013-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多