Java程序无法编译:缺少返回语句
我正在努力学习java,这是我第一次在这里问问题。 我的程序不会编译,因为这个方法中缺少一个return语句,但我似乎找不到哪里出错了Java程序无法编译:缺少返回语句,java,compiler-errors,Java,Compiler Errors,我正在努力学习java,这是我第一次在这里问问题。 我的程序不会编译,因为这个方法中缺少一个return语句,但我似乎找不到哪里出错了 static double[][] matrixPow(double[][] matrixA, int e) { if (e == 0) { double [][] I = new double[matrixA[0].length][matrixA.length]; for (int k = 0; k < matr
static double[][] matrixPow(double[][] matrixA, int e) {
if (e == 0) {
double [][] I = new double[matrixA[0].length][matrixA.length];
for (int k = 0; k < matrixA.length; k++) {
I[k][k] = 1;
}
return I;
} else if ((e % 2) == 0) {
return matrixPow( matrixMult(matrixA, matrixA), e/2);
} else if ((e % 2) == 1) {
return matrixMult(matrixA, matrixPow(matrixA, (e - 1)));
}
}
该方法假定计算一个矩阵为整数e的幂。错误消息明确指出,至少有一个分支没有返回语句。在这种情况下,if和else if都不会触发 这种情况在现实生活中是不可能发生的,但编译器不知道这一点,也没有办法弄清楚。只要将最后一个else-if分支转换为else,一切都应该正常。您使用的是else-if语句,如果所有语句都失败,则没有返回语句。您需要在函数末尾或else块中返回一些内容
这个方法应该总是返回一个值。根据Java规范,在最终的else之后,如果不可能达到这个值,您需要一个return语句
static double[][] matrixPow(double[][] matrixA, int e) {
//Einheitsmatrix
if (e == 0) {
double[][] I = new double[matrixA[0].length][matrixA.length];
for (int k = 0; k < matrixA.length; k++) {
I[k][k] = 1;
}
return I;
}
//Der eine Kram
else if ((e % 2) == 0) {
return matrixPow(matrixMult(matrixA, matrixA), e / 2);
}
//der andere Kram
else if ((e % 2) == 1) {
return matrixMult(matrixA, matrixPow(matrixA, (e - 1)));
}
// we return null in case every other cases fails.
return null
}