运行自定义平方根函数(Java)时出错

时间:2016-08-08 05:28:01

标签: java methods runtime-error square-root

所以我创建了一个方法,我想计算任何给定整数的平方根。对于像27这样的x,我希望它显示3√3。或28,2√7等等。我会提前告诉你,我知道这个方法还有其他问题 - 我打算解决它们。

public static void root(int x) {
    int [] a = new int [x]; //list of outside integers for each i
    int b = x; //inside
    int c = 1; //product of a[]
    double sqrt = Math.sqrt(x);

    if (sqrt != (int) sqrt) {
        for (int i=2; i < x; i++) {
        a[i] = 1;
        while (x%(i^2) ==0) { //ERROR HERE
            a[i] = a[i] * i;
            b = b/(a[i])^2;
        }
        c = c * a[i];
        }
        System.out.println(b+"\u221A" + c);
    }
    else {
        System.out.println((int) sqrt);
    }
}

执行任何不产生干净根的整数后,我收到一条错误,上面写着&#34; / zero&#34;。上面我标有发生错误的地方。提前谢谢!

2 个答案:

答案 0 :(得分:4)

问题在于这个表达式

x%(i^2)

运算符^不是取幂,它是按位XOR 。第一次迭代i22 ^ 2的结果为零。你试图除以零(得到余数),这是失败的。使用

x%(i*i)

代替。

答案 1 :(得分:1)

在整个答案中,您使用^来对数字进行平方。但是,这实际上是一个按位XOR运算符。相反,使用Math.pow(numToSquare, 2)函数,或简单地将数字或表达式乘以它们。