我陷入了模拟考试题中。我创建了一个名为Power的类,该类允许将数字升为任意幂。

问题的第三部分要求我创建另一个类BoundedPower,该类将扩展Power。给我MAX-X变量(x不能超过此值),并告诉我BoundedPower类必须:行为类似于Power类,使用构造函数,并使用powN方法。

我的代码如下,我不确定如何使BoundedPower类正常工作。

public class Power {

    private double x = 0;

    Power(double x) {
        this.x = x;
    }

    public double getX() {
        return x;
    }

    public double powN(int n) {

        double result = 1.0;
        for (int i = 0; i < n; i++) {
            result = result * x;
        }
        return result;

    }

    public static void main(String[] args) {

        Power p = new Power(5.0);
        double d = p.powN(3);
        System.out.println(d);
    }

}


public class BoundedPower extends Power {

    public static final double MAX_X = 1000000;

    // invariant: x <= MAX_X

    Power x;

    BoundedPower(double x) {
        super(x);
        // this.x=x; x is private in Power class

    }

    public double powN(int n) {

        if (x.getX() > MAX_X) {

            return 0;
        } else {

            double result = 1.0;
            for (int i = 0; i < n; i++) {
                result = result * getX();
            }
            return result;
        }
    }

    public static void main(String[] args) {

        BoundedPower bp = new BoundedPower(5);
        double test = bp.powN(4);
        System.out.println(test);
    }

}

最佳答案

public class BoundedPower extends Power {

  public static final double MAX_X = 1000000;

  BoundedPower(double x) {
    super(x);
  }

   public double powN(int n) {

     if (x.getX() > MAX_X) {
      return 0;
     } else {
      return super.powN(n);
     }
   }

   public static void main(String[] args) {

   BoundedPower bp = new BoundedPower(5);
   double test = bp.powN(4);
   System.out.println(test);
 }
}

您不必将计算公式复制到子类(只需调用)。您也不需要super.powN(..)中的另一个Power实例。

10-08 10:51