0

私は模擬試験問題で立ち往生しています。

私は以下のクラスを書きました、そしてそれは働きます。ただし、powNメソッドの本体内では、for(){}ループを使用する必要があります。また、の非防御的な定義を使用する必要がありpowNます。

これが私の質問です。forループを使用するにはどうすればよいですか?非防御的な方法とは何ですか?それはどのように使用できpowNますか?

public class Power {
    private double x = 0;

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

    public double getX() {
        return x;
    }

    public double powN(int n) {
        return Math.pow(getX(), n);
    }

    public static void main(String[] args) {
        Power p = new Power(5.0);
        double d = p.powN(2);
        System.out.println(d);
    }
}
4

3 に答える 3

2

私の質問は、forループをどのように使用できるかです

私はJava構文に精通していませんが、アイデアは次のとおりです。

public double powN(int n) {

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

非防御が何を意味するのか分かりません

于 2012-08-11T20:01:05.057 に答える
1

非防御とは、n == 0の場合、0を返すなどのエラーをチェックするように特別にコーディングしていないことを意味します。

代わりに、nが何であれ、その値をforループで使用します。

したがって、組み込みのMath関数を使用する代わりに、Forループを記述して同じことを実行します。

double result = 0.0
for (int i = 0; i < n; i++) {
   result = result * x;
}
于 2012-08-11T20:04:42.697 に答える
1

私はあなたの資料から防御的/非防御的アプローチについてのスライドを読みました。あなたの教授は、パラメータが有効かどうかを確認してほしいと言っていると思います。このような:

  public double powN(int n) {
    if (n < 0) {
      throw new UnsupportedOperationException("Only positive values are supported");
    }
    double tmp = 1;
    for (int i = 0; i < n; i++) {
      tmp = tmp * getX();
    }
    return tmp;
  }
于 2012-08-11T20:46:13.197 に答える