java - 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;
}
}
}
解决方案
你在 for 循环中有一个 if-else ,它在两种情况下都返回。这意味着 for 循环永远不会到达第二次迭代。这似乎是一个错误。
然而,编译器抱怨您需要在所有代码路径上返回一个值,这意味着可能没有正方形中的项目,并且该方法在 for 循环之后返回什么?您需要在循环之后添加一个 return 语句。
推荐阅读
- c# - 如何从项目列表中生成多个表单?
- google-cloud-dataflow - GCP 数据流 - 吞吐量逐渐减慢,工作人员未充分利用
- spring-boot - 尝试在 Java Spring Boot 中从 H2 数据库中获取相关实体
- ansible - 单个项目和项目列表的循环和 with_items 行为之间的区别
- html - 将css文件链接到html文件时的根目录
- python - OpenCV - 从二维图像点正确恢复姿势和地标位置
- r - 反转变量列表的值
- python - 尝试绘制一个对象:使用 matplotlib 在数据集中列出日期列
- data-science - 使用 Geopandas 返回多边形上的数据点
- c++ - Codecademy - 向量:操作