总和是-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);
}
答案 0 :(得分:3)
我不明白for循环中的
j--
将如何增加。它应该在执行主体后递增,对吗?
已更新,然后,是的。 (更新是减量,而不是增量。)但是,它是在每次循环体运行后发生的。
但for循环的初始化使
j--
毫无意义吗?
没有。初始化j
以i
的值开头,然后在j
为> 0
时倒计时(不更改i
)。
所以我假设在第二次迭代
j
因2
而变为i++
。
while
循环的第二次迭代,是的。 j
将从2
开始,然后for
循环将运行两次(j = 2
和j = 1
)。
为了完整清晰,以下是for
循环的工作原理:
for (initialization; test; update) {
body;
}
按此顺序执行:
initialization
test
,如果错误则离开循环body
update
答案 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+1
,j += 1
它们会产生相同的效果,@T.J's answer.