解释for循环中的输出

时间:2013-12-27 20:17:58

标签: java for-loop

我是Java编程的新手,我想猜测为什么输出以下代码:

public class ForLoop {
    public static void main(String[] args) {
        int x;
        for (x=1; x<=2; x++) {
            x += 3;
        }
        System.out.print(x);
        }
}

是5而不是7!对于第一次迭代,1添加到3(结果:4)并且它存储在变量x中,因此x是4.在第二次迭代中,我们添加3到4,我们必须获得7.错误可能很容易找到但我无法抓住它。请帮助和谢谢。

5 个答案:

答案 0 :(得分:4)

这部分:

    for (x=1; x<=2; x++)

表示x将在每次迭代结束时递增。因此,在第一次迭代中,由于这个原因,将3添加到x:

    x += 3;

导致值为4.然后,在该迭代结束时,x增加1,变为5.由于5大于2,因此循环关闭。

答案 1 :(得分:1)

这里使用x作为迭代器和更新变量的大问题。这就是计算机的发展方向。

当你在for循环中时,x最初为1,然后你向它添加三个,然后你的for循环上的迭代器后来再添加1(使其为5)。此时,您的条件(x <= 2)为假,因为for循环已完成。

将其更改为此,您将获得所需的结果:

public class ForLoop {
    public static void main(String[] args) {
        int x = 1;
        for (int y = 0; y <= 1; y++) {
            x += 3;
        }
        System.out.print(x);
        }
}

答案 2 :(得分:1)

在第一次通过时,进行体,x变为4.然后进行增量。 (for循环的第3个参数),结果x为5。 在第二次传递中,条件未满足,因为x已经是5,但是运行循环需要小于或等于2。因此,循环将停止,x将被打印5。

答案 3 :(得分:0)

代码

int x;
for (x=1; x<=2; x++) {
    x += 3;
}

的工作原理如下:

int x;
x = 1;           // for-initialization
while (x <= 2) { // for-condition
    x += 3;      // for-body
    x++          // for-increment
}

特别地:

  • 条件在循环体之前进行测试,在您的情况下
  • 循环体对条件有影响。

答案 4 :(得分:0)

在第一次迭代之后x就像你说的那样,但是然后执行x ++,因此x变为5. 5大于2(x <= 2),因此迭代停止。