什么是java中的非防御方法?

时间:2012-08-11 19:55:21

标签: java

我被困在模拟考试问题上。

我已经在下面写了这个课程并且有效。但是,在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);
    }
}

3 个答案:

答案 0 :(得分:2)

  

我的问题是如何使用for循环

我不熟悉java语法,但想法是:

public double powN(int n) {

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

不知道什么是非防守手段

答案 1 :(得分:1)

非防御只是意味着您没有专门编码来检查错误,例如n == 0,返回0。

相反,你只需要接受任何n并在你的for循环中使用它的值。

因此,不要使用内置的Math函数,只需编写一个For循环来执行相同的操作。

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

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