for循环如何递增?

时间:2016-12-11 10:18:00

标签: java for-loop

总和是-9,但我无法弄清楚原因。我不明白for循环中的j--会如何增加。它应该在执行主体后递增,对吧?但是for循环的初始化是否使j--毫无意义?所以我假设在第二次迭代中,由于i ++,j变为2。有人可以帮助以正确的方式看待这个吗?

public static void whatsTheSum(){
    int sum = 1;
    int i = 1;

    while(i < 5){
        for(int j = i; j > 0; j--)
            sum += (j - i);
        i++;
    }
    System.out.println(sum);
}

3 个答案:

答案 0 :(得分:3)

  

我不明白for循环中的j--将如何增加。它应该在执行主体后递增,对吗?

已更新,然后,是的。 (更新是减量,而不是增量。)但是,它是在每次循环体运行后发生的。

  

但for循环的初始化使j--毫无意义吗?

没有。初始化ji的值开头,然后在j> 0时倒计时(不更改i)。

  

所以我假设在第二次迭代j2而变为i++

while 循环的第二次迭代,是的。 j将从2开始,然后for循环将运行两次(j = 2j = 1)。

为了完整清晰,以下是for循环的工作原理:

for (initialization; test; update) {
    body;
}

按此顺序执行:

  1. initialization
  2. 评估test,如果错误则离开循环
  3. body
  4. update
  5. 跳转到第2步

答案 1 :(得分:0)

因此,如果您有嵌套循环,那么记下每次迭代总是很好:

i = 1, sum = 1
1. while (i < 5) = true so
1.1 for(int j = 1; j > 0; j--) j=1
    sum += (1-1)

i=2 sum =1
2. while (i < 5) = true so
2.1 for(int j = 2; j > 0; j--)
    sum += (2-2) --> sum = 1
2.2 for(int j = 1; j > 0; j--)
    sum += (1-2) --> sum = 0

i=3 sum =0
3. while (i < 5) = true so
3.1 for(int j = 3; j > 0; j--)
    sum += (3-3) --> sum = 0
3.2 for(int j = 2; j > 0; j--)
    sum += (2-3) --> sum = -1
3.3 for(int j = 1; j > 0; j--)
    sum += (1-3) --> sum = -3

等等

答案 2 :(得分:0)

根据我所理解的上述问题中提出的要求将j增加到0 to i的迭代,你需要像 -

while(i < 5){
    for(int j = 0; j < i; j++) {
        sum += (j - i);
    } 
    i++;
}

同时j++也可以替换为j=j+1j += 1它们会产生相同的效果,@T.J's answer.

可以很好地解释顺序