0

シリーズ 1、3、9、27、81 の最初の 16 要素の合計を計算しようとしています。コードは、最初に TYPE Seq となる Geometry の適切なインスタンスを作成することによって計算します。

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);
}

}

これを長い道のりで行っているかどうかわかりませんか?まだ機能していません。日食は、合計の修飾子を静的に変更する必要があると言っていますか?

4

4 に答える 4

4

sum静的メソッド内で合計に到達しようとしているため、静的になりたいですmain。静的メソッド内の非静的フィールドにはアクセスできません。Geometricinsideのインスタンスを作成してmainから、変数を呼び出す必要がありますsum

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

また、あなたのやり方は、オブジェクト指向プログラミングの概念の良い方法ではありません。

メソッドからシリーズの合計を返していますが、それを というフィールドにも格納しており、計算する前にsum必要です。sum代わりに、メソッドから合計を取得する必要があります。

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

メソッドtotalはこのクラスのインスタンスに対して指定されているため、合計を計算するために新しいインスタンスを作成するのではなく、現在のインスタンスの合計を計算する必要があります。

public double total() {
    double temp = 1;
    double sum = 0;
    for (int a = 0; a < 16; a++) {
        sum += temp;
        temp *= this.b;
    }
    return sum;
}
于 2012-08-09T22:25:09.943 に答える
1

これを必要以上に複雑にしたようです。別のクラスを使用せずにそれを行う方法は次のとおりです(コードは、合計を計算する必要がある任意のクラスに入れることができます):

int currentNumber = 1;
int sum = 0;
for (int i = 0; i < 16; i++)
{
    sum += currentNumber;
    currentNumber *= 3;
}

等比数列の項の合計の値は、変数 に格納されますsum。または、等比数列の項の和に閉形式を使用します。

int firstNumber = 1;
int multFactor = 3;
int numTerms = 16;
int sum = firstNumber * ((1 - multFactor ^ numTerms) / (1 - multFactor));

またはあなたの場合:

int sum = 1 * ((1 - 3^16) / (1 - 3));  // returns 21523360, the number you were trying to calculate
于 2012-08-09T22:25:45.313 に答える
0

total と sum は、静的であるように見えます。getSum の目的がわかりません。しかし、本当の問題は、なぜ数値を直接足し合わせないのかということです。すべてにクラスは必要ありません。

于 2012-08-09T22:27:03.487 に答える
0

日食は、合計の修飾子を静的に変更する必要があると言っていますか?

sum静的メソッドで印刷しているためですmain(String[])。静的メソッドからインスタンス フィールドにアクセスすることはできません。幾何学的なインスタンスを作成し、sumそのインスタンスから を取得する必要があります。

于 2012-08-09T22:25:19.507 に答える