当前位置: 代码迷 >> J2SE >> 新人求指导下解决办法
  详细解决方案

新人求指导下解决办法

热度:34   发布时间:2016-04-23 20:31:15.0
新人求指导下
     今天我在敲一个练习的时候   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中去
  相关解决方案