2

私はこれまでこれを行ってきましたが、パートbで問題があります。これは模擬試験問題であり、パートbの残りの部分についてはわかりません。

Q)で与えられるシーケンスの要素を合計しs.valAtIndex(i)ます。sはSeq型です。Seqは、メソッドを持つインターフェースですvalAtIndex (integer parameter and double result)

(a)インターフェースSeqを記述します。

(b)Seqを実装して、クラスGeometricを記述します。各インスタンスsが次のように等比数列を表すように s.valAtIndex(0), s.valAtIndex(0)...i番目の要素s.valAtIndex(i)がベースbのi乗、つまりb^iに等しくなるようにします。(b ^ 0 = 1であることを思い出してください)

(a)

public interface Seq{

public double valAtIndex(int i);
}

(b)

public Geometric implements Seq{

Seq s;
private double b;

public Geometric(double a){

s = new Geometric(a);
this.b=a;
}

@Override
public double valAtIndex(int i){

return 0;//not sure how to do this method

}
4

2 に答える 2

7

あなたは次のような意味です:

@Override
public double valAtIndex(int i) {
    return Math.pow(b, i);
}

編集:また、他の回答で述べられているようSeq s;に、コンストラクターでそれに関する行を削除します。最後に必要なものは次のとおりです。

public class Geometric implements Seq {
    private double b;

    public Geometric(double a) {
        this.b=a;
    }

    @Override
    public double valAtIndex(int i){
        return Math.pow(b, i);
    }
}
于 2012-08-09T21:05:17.697 に答える
0

初め、

@Override
public double valAtIndex(int i) {
    return Math.pow(b, i);
}

これにより、bがiの累乗に戻り​​ます。

ただし、コードによってスタックオーバーフロー例外が発生します。コンストラクター内でgeometricのコンストラクターを呼び出します。その結果、コンストラクターが継続的に呼び出され、例外が発生します。

コンストラクターを次のように変更する必要があります

public Geometric(double a) {
    this.b = a;
}

class Geometricまた、代わりにとして宣言する必要がありますpublic Geometric

于 2012-08-09T21:08:46.240 に答える