gpt4 book ai didi

java - 值无法解析

转载 作者:行者123 更新时间:2023-12-01 23:25:51 25 4
gpt4 key购买 nike

以下代码片段的目的是创建矩阵的实例,然后计算 nxn 矩阵的行列式。但是,computeDet 方法不会返回,因为出现以下错误:值无法解析为变量。这是为什么?
** 行列式代码编辑自 here (此代码确实有效 - 没有错误)

public class MatrixArrayCR {
long[][] matrix;

public MatrixArrayCR(long[] arr) {
double len = Math.sqrt(arr.length);
int counter = 0;
for (int i=0; i==len; i++) {
for (int j=0; j==len; j++) {
matrix[i][j] = arr[counter];
counter++;
}
}
}
// determinant method edited from code off http://www.coderanch.com/t/446179/java/java/Learning-Project
public long determinant() {
return computeDet(matrix);
}
public long computeDet(long[][] matrix) {
int matrixSize = matrix.length;
if (matrixSize==2) {
return matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
} else {
long value = 0;
for (int i=0; i<matrixSize; i++) {
long[][] minor=generateMinor(matrix,0,i);
value += (sgn(i)*matrix[0][i]*computeDet(minor));
}
} return value; //ERROR HERE
}
private int sgn(int n) {
if (n%2==0) {
return 1;
} else {
return -1;
}
}
private long[][] generateMinor(long[][] matrix, int row, int column) {
int matrixSize = matrix.length;
int minorSize = matrixSize -1;
int counterOne = 0;
int counterTwo = 0;
long[][] minor = new long[minorSize][minorSize];

for (int i=0; i<matrixSize; i++) {
if (i==row) {
continue;
} for (int j=0; j<matrixSize; j++) {
if (j==column) {
continue;
} minor[counterOne][counterTwo] = matrix[i][j];
++ counterTwo;
} ++counterOne;
counterTwo = 0;
} return minor;
}
}

最佳答案

value 是一个局部变量,即它仅在声明它的 block 中可见。由于您在 else block 中声明了值并尝试在该 block 之外返回它,因此您会收到此错误。

return 语句应该位于 else block 中。即:

public long computeDet(long[][] matrix) {
int matrixSize = matrix.length;
if (matrixSize==2) {
return matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
} else {
long value = 0;
for (int i=0; i<matrixSize; i++) {
long[][] minor=generateMinor(matrix,0,i);
value += (sgn(i)*matrix[0][i]*computeDet(minor));
}
return value;
}
}

关于java - 值无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com