首页 > 解决方案 > Java函数无法识别return语句

问题描述

为什么这不起作用?!?我正在编写一个简化平方根的函数(即 sqrt(44) 将变成 2*sqrt(11)。我将其作为 double[] 返回,但我收到一条错误消息,提示“此方法必须返回 double[]" 类型的结果,即使我返回的是 double[]。谁能告诉我如何解决这个问题,我完全迷路了。

public static double[] simpDiscr(double d, double coeff) {
    int max = (int) (Math.floor(Math.sqrt(d)));
    int[] squares = {};
    for (int i = 2; i <= max; i++) {
        squares = Arrays.copyOf(squares, squares.length + 1);
        squares[squares.length - 1] = i * i;
    }
    for (int square : squares) {
        if (d / square == Math.floor(d / square)) {
            d = d / square;
            coeff = coeff * Math.sqrt(square);
            return simpDiscr(d, coeff);
        } else {
            double[] dAndCoeff = { d, coeff };
            return dAndCoeff;
        }
    }
}

标签: javarecursion

解决方案


你在 for 循环中有一个 if-else ,它在两种情况下都返回。这意味着 for 循环永远不会到达第二次迭代。这似乎是一个错误。

然而,编译器抱怨您需要在所有代码路径上返回一个值,这意味着可能没有正方形中的项目,并且该方法在 for 循环之后返回什么?您需要在循环之后添加一个 return 语句。


推荐阅读