Java制作数学方法

时间:2013-11-20 20:01:47

标签: java methods

我正在创建一些简单的数学计算方法。我有一个方形,立方体和超立方体方法。我正在尝试创建一个幂方法,当n = 2时,调用square方法,当n = 3时,调用cube方法等。我希望这个幂方法返回一个int k。然而,k的值似乎并不像if语句那样。有什么建议吗?

  public int power(int x, int n){
    int k;
    if (n==2){
        k = square(x);
    }
    else if (n==3){
        k = cube(x);
    }
    else if (n==4){
        k = hypercube(x);
    }
    else if (n==1){
        k = x;
    }
    return k;
}

4 个答案:

答案 0 :(得分:1)

使用您的代码,我从编译器中获取“错误:变量k可能尚未初始化”。我猜这就是你的意思。这是因为,与错误建议一样,如果n不在1 - 4范围内,则k永远不会显式设置为任何值。这是修复问题的一种方法,它允许该方法适用于较大的n值(只要您不循环通过Integer.MAX_VALUE):

public int power(int x, int n){
    int k;
    if (n==2){
        k = square(x);
    }
    else if (n==3){
        k = cube(x);
    }
    else if (n==4){
        k = hypercube(x);
    }
    else if (n==1){
        k = x;
    }
    else {
        k = 1;
        for (int i = 0; i < n; i++) {
            k *= x;
        }
    }
    return k;
}

答案 1 :(得分:0)

你可以使用循环,就像这里(我希望我做对了)。

public int power(int x, int n){
    if(n==0) return 1;
    int k = x;
    while(--n > 0) {
        k *= x;
    }
    return k;
}

您也可以添加对负功率的支持,但是您需要其他一些返回类型(例如,float或double)。

但老实说,为什么不用Math.pow()

答案 2 :(得分:0)

此代码无法编译,因为k尚未初始化,并且您在return k;处收到编译错误。如果要初始化为0,请在声明中使用int k=0

答案 3 :(得分:0)

如果在途中分配了

k将在方法结束时“知道”。也许您强制执行不能传递k的无效值,然后它应该按照您希望的方式执行:

public int power(int x, int n){
    if (n < 1 || n > 4){
        throw new IllegalArgumentException("n is invalid :" + n);
    }
    int k = 0;
    if (n==2){
        k = square(x);
    }
    else if (n==3){
        k = cube(x);
    }
    else if (n==4){
        k = hypercube(x);
    }
    else if (n==1){
        k = x;
    }
    return k;
}

您还应确保x始终有效。