2

到目前为止我已经这样做了,但是在 b 部分有困难。这是一份模拟试卷,b 部分的其余部分不确定。

Q) 总结由 给出的序列的元素s.valAtIndex(i)。s 是 Seq 类型。Seq 是一个具有方法的接口valAtIndex (integer parameter and double result)

(a) 编写接口 Seq。

(b) 写一个 Geometric 类,实现 Seq. 因此每个实例 s 表示如下的几何级数 s.valAtIndex(0), s.valAtIndex(0)...使得第 i 个元素s.valAtIndex(i)等于底 b 的第 i 次幂,即 b^i。(回想一下 b^0=1)

(一个)

public interface Seq{

public double valAtIndex(int i);
}

(二)

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 的幂。

但是,您的代码会导致堆栈溢出异常。您在构造函数内部调用几何构造函数。导致对构造函数的连续调用和异常。

您需要将构造函数更改为

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

此外,您需要将其声明class Geometricpublic Geometric

于 2012-08-09T21:08:46.240 回答