Java - 计算一系列数字的总和

nsc*_*010 0 java

我试图计算系列1,3,9,27,81的前16个元素的总和....代码通过首先创建一个适合的TYPE Seq实例来实现.

public class Geometric implements Seq {

private double b;
public Seq s;
public double sum;

public Geometric(double a) {

    this.b = a;
}


public double valAtIndex(int i) {
    // TODO Auto-generated method stub
    return Math.pow(b, i);
}

public double total() {

    s = new Geometric(3.0);
    for (int a = 0; a < 16; a++) {

        int c = -1;
        sum = sum + s.valAtIndex(c = c + 1);
        c++;

    }
    return sum;
}

public double getSum() {

    return sum;
}

public static void main(String[] args) {

    System.out.println(sum);
}
Run Code Online (Sandbox Code Playgroud)

}

不确定我是否正在这么长时间做这件事?它还没有工作,eclipse说我需要将sum的修饰符更改为static?

sed*_*ran 5

它想要sum静态,因为你试图在静态方法中达到总和,main.您无法访问静态方法中的非静态字段.你应该创建一个Geometricinside 实例main,然后你应该调用变量sum.

public static void main(String[] args) {
    Geometric geo = new Geometric(some_number);
    System.out.println(geo.sum);
}
Run Code Online (Sandbox Code Playgroud)

而且,你的做事方式并不是面向对象编程概念的好方法.

您正在从方法返回系列的总数,但您也将它存储在一个名为的字段中sum,并且sum在计算之前您需要它.相反,你应该从方法中得到总数.

public static void main(String[] args) {
    Geometric geo = new Geometric(3.0);
    System.out.println(geo.total());
}
Run Code Online (Sandbox Code Playgroud)

由于该方法total是为此类的实例指定的,因此不应创建新实例来计算总数,而应计算当前实例的总数.

public double total() {
    double temp = 1;
    double sum = 0;
    for (int a = 0; a < 16; a++) {
        sum += temp;
        temp *= this.b;
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)