这是我的代码的一小部分。问题在于,无论代码将进入if
语句。
public static double value(char[][] array, int x, int y) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
if (array[i][j] == (char) 120) {
int x_cord = i;
int y_cord = j;
int width = (x_cord - x);
int height = (y_cord - y);
Math.abs(width);
Math.abs(height);
double distance = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));
return distance;
}
}
}
}
我明白我在某处有一个逻辑上的缺陷,我需要以某种方式告诉程序它无论如何都会到达那里但我能做到吗?
答案 0 :(得分:2)
编译器不接受非void
返回类型的方法,如果它不确定
由于您确定循环内的return
语句始终是执行的,您可以添加带有任何值的return
语句或抛出异常:
public static double value(char[][] array, int x, int y) {
for (int i = 0; i < array.length; i++) {
...
}
throw new IllegalArgumentException("array must contain a char with code 120");
}
答案 1 :(得分:1)
在每个理论上可能的流程中都必须有$_SESSION['SESSION_UID'] = $uid;
$_SESSION['SESSION_EMAIL'] = $email;
$_SESSION['SESSION_IS_LOGGEDIN'] = 1;
语句,即使在运行时没有机会到达那里。只需在最后添加一个“虚拟回报,你就可以了:
return
答案 2 :(得分:1)
尝试创建一个像这样初始化的语言环境变量double distance= 0;
:
public static double value(char[][] array, int x, int y) {
double distance= 0;
...
return distance;
}
}
}
return distance;
}
答案 3 :(得分:0)
代码中有两个可能的路径/分支,如果您已经定义了方法返回值,则每个路径/分支都必须有一个有效的return语句。