Java:所有变量的Sum系列逻辑错误 - 最终总和打印

时间:2015-04-29 14:38:59

标签: java

我尝试编写一个应该打印迭代总和的程序。

但是当前的代码是打印每次迭代的最终总和,我无法理解为什么:

package sumseries;
public class Sumseries {
   public static void main(String[] args) {
     System.out.println("i" + "\t\t"+ "m(i)");
     System.out.println("===================");
     int x=0;
       for(int i=1;i<=20;i++){
        System.out.println( i + "\t\t" + series(x) );
       }
   }

  public  static double series(int i){
    double sum=0;

    for(i=0;i<=20;i++){

      sum +=  ((double) i)/(i+1);

    }
    return sum;
  }
}

这里有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:0)

你做错了两件事。

  
      
  1. System.out.println( i + "\t\t" + series(x),   在这里,你总是传递0到系列方法。
  2.   系列方法中的
  3. for(i=0;i<=20;i++),   这里再次设置i = 0;
  4. 的值   
public static void main(String[] args) {
         System.out.println("i" + "\t\t"+ "m(i)");
         System.out.println("===================");
         int x=0;
         for(int i=1;i<=20;i++){
            //Pass Value of i instead of x=0;
            System.out.println( i + "\t\t" + series(i) );
         }
    }

    public  static double series(int i){
        double sum=0;
        //Don't Iterate it Again for 20 times, Iterate it for i Number of value only.
        for(int j=0;j<=i;j++){
          sum +=  ((double) j)/(j+1);
        }
        return sum;
    }

答案 1 :(得分:0)

在你的方法中:

  public  static double series(int i){//The parameter is variable i
    double sum=0;

    for(i=0;i<=20;i++){ // You are again initialising i as 0;

      sum +=  ((double) i)/(i+1);

    }
    return sum;
  }

我已经写了相邻行的评论。因此,无论您将此参数传递给此方法,您都可以获得相同的sum