今天我在敲一个练习的时候 13-23+33-43+...............973-983+993-1003,我知道答案是 -500,
但是
public class Test {
public static void main(String[] args) { //在这个代码的循环语句里,我把 sum+=x 放在了 if之前 得出 503,
int x = 0;
int sum = 0;
for(int i=1; i<=100; i++) {
sum += x;
if (i%2==0) {
x = -(i*10+3);
}
else {
x = i*10+3;
}
}
System.out.println(sum);
}
}
实际上正确的代码是
if (i%2==0) {
x = -(i*10+3);
}
else {
x = i*10+3;
}
sum += x;
}
System.out.println(sum);
位置的变化到底导致了什么情况啊 ,我没有看懂,求大大带走!!!
------解决方案--------------------
sum的值是根据x决定的,而x的值是根据条件决定的,你写到上面肯定就不合适了,而且你循环到最后一次的时候,那个if条件也变得没有意义了,因为你已经得到了最后的sum。
------解决方案--------------------
你的思路是:通过sum += 13
sum += -23
.......
sum += -1003
100次相加之后得到最终结果;
但是:由于x初始值为0,按照错误算法:先去加x,再去计算第i个x的值就变成如下
sum += 0
sum += 13
sum += -23
.......
sum += 993
100次相加之后得到最终结果;
所以就像楼上说的,你最后那个-1003做了无用功,根本没有加到sum中去