Java - 实现另一个类并修改方法

时间:2012-08-09 21:01:45

标签: java

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

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

(a)编写接口Seq。

(b)写一个几何类,实现Seq。这样每个实例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

}

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

首先,

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

这会使b返回i的力量。

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

您需要将构造函数更改为

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

此外,您需要将其声明为class Geometric而不是public Geometric