Java 无法解析值

Java 无法解析值,java,matrix,determinants,Java,Matrix,Determinants,下面代码片段的目的是创建一个矩阵实例,然后计算nxn矩阵的行列式。但是,方法computeDet不会返回,因为发生以下错误:值无法解析为变量。为什么呢? **根据编辑的行列式代码(此代码有效-无错误) 公共类矩阵arraycr{ 长[][]矩阵; 公共矩阵阵列(长[]阵列){ 双长度=数学sqrt(arr.length); int计数器=0; for(int i=0;i==len;i++){ 对于(int j=0;j==len;j++){ 矩阵[i][j]=arr[计数器]; 计数器++; }

下面代码片段的目的是创建一个矩阵实例,然后计算nxn矩阵的行列式。但是,方法
computeDet
不会返回,因为发生以下错误:
值无法解析为变量。为什么呢?

**根据编辑的行列式代码(此代码有效-无错误)

公共类矩阵arraycr{
长[][]矩阵;
公共矩阵阵列(长[]阵列){
双长度=数学sqrt(arr.length);
int计数器=0;
for(int i=0;i==len;i++){
对于(int j=0;j==len;j++){
矩阵[i][j]=arr[计数器];
计数器++;
}
}
}
//从代码关闭编辑的行列式方法http://www.coderanch.com/t/446179/java/java/Learning-Project
公共长行列式(){
返回计算集(矩阵);
}
公共长计算集(长[][]矩阵){
int matrixSize=矩阵长度;
如果(矩阵大小==2){
返回矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{
长值=0;

对于(int i=0;i值变量在if或else块内声明,并且仅在声明它的块内可见。如果希望它在方法末尾可见,请在方法开始时,在if/else块之前声明它

public long computeDet(long[][] matrix) {
    long value = 0L;
    int matrixSize = matrix.length;
    if (matrixSize==2) {
        value = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
    } else {
        for (int i=0; i<matrixSize; i++) {
            long[][] minor=generateMinor(matrix,0,i);
            value += (sgn(i)*matrix[0][i]*computeDet(minor));
        }
    } 
    return value; 
}
公共长计算集(长[][]矩阵){
长值=0L;
int matrixSize=矩阵长度;
如果(矩阵大小==2){
值=矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{

对于(int i=0;i值变量在if或else块内声明,并且仅在声明它的块内可见。如果希望它在方法末尾可见,请在方法开始时,在if/else块之前声明它

public long computeDet(long[][] matrix) {
    long value = 0L;
    int matrixSize = matrix.length;
    if (matrixSize==2) {
        value = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
    } else {
        for (int i=0; i<matrixSize; i++) {
            long[][] minor=generateMinor(matrix,0,i);
            value += (sgn(i)*matrix[0][i]*computeDet(minor));
        }
    } 
    return value; 
}
公共长计算集(长[][]矩阵){
长值=0L;
int matrixSize=矩阵长度;
如果(矩阵大小==2){
值=矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{

对于(int i=0;i值变量在if或else块内声明,并且仅在声明它的块内可见。如果希望它在方法末尾可见,请在方法开始时,在if/else块之前声明它

public long computeDet(long[][] matrix) {
    long value = 0L;
    int matrixSize = matrix.length;
    if (matrixSize==2) {
        value = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
    } else {
        for (int i=0; i<matrixSize; i++) {
            long[][] minor=generateMinor(matrix,0,i);
            value += (sgn(i)*matrix[0][i]*computeDet(minor));
        }
    } 
    return value; 
}
公共长计算集(长[][]矩阵){
长值=0L;
int matrixSize=矩阵长度;
如果(矩阵大小==2){
值=矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{

对于(int i=0;i值变量在if或else块内声明,并且仅在声明它的块内可见。如果希望它在方法末尾可见,请在方法开始时,在if/else块之前声明它

public long computeDet(long[][] matrix) {
    long value = 0L;
    int matrixSize = matrix.length;
    if (matrixSize==2) {
        value = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
    } else {
        for (int i=0; i<matrixSize; i++) {
            long[][] minor=generateMinor(matrix,0,i);
            value += (sgn(i)*matrix[0][i]*computeDet(minor));
        }
    } 
    return value; 
}
公共长计算集(长[][]矩阵){
长值=0L;
int matrixSize=矩阵长度;
如果(矩阵大小==2){
值=矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{

for(int i=0;i
是一个局部变量,即它仅在已声明的块中可见。由于您在else块中声明了值并尝试在该块之外返回,因此会出现此错误

return语句应位于else块中,即:

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; 
        }
    }
公共长计算集(长[][]矩阵){
int matrixSize=矩阵长度;
如果(矩阵大小==2){
返回矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{
长值=0;

for(int i=0;i
是一个局部变量,即它仅在已声明的块中可见。由于您在else块中声明了值并尝试在该块之外返回,因此会出现此错误

return语句应位于else块中,即:

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; 
        }
    }
公共长计算集(长[][]矩阵){
int matrixSize=矩阵长度;
如果(矩阵大小==2){
返回矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{
长值=0;

for(int i=0;i
是一个局部变量,即它仅在已声明的块中可见。由于您在else块中声明了值并尝试在该块之外返回,因此会出现此错误

return语句应位于else块中,即:

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; 
        }
    }
公共长计算集(长[][]矩阵){
int matrixSize=矩阵长度;
如果(矩阵大小==2){
返回矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{
长值=0;

for(int i=0;i
是一个局部变量,即它仅在已声明的块中可见。由于您在else块中声明了值并尝试在该块之外返回,因此会出现此错误

return语句应位于else块中,即:

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; 
        }
    }
公共长计算集(长[][]矩阵){
int matrixSize=矩阵长度;
如果(矩阵大小==2){
返回矩阵[0][0]*矩阵[1][1]-矩阵[0][1]*矩阵[1][0];
}否则{
长值=0;
对于(int i=0;i