2016-11-06 31 views
0

我想制作一个二维数组的数组,但是在这里被一个成员指向一个ArrayList,并按照他的建议写了下面的代码:Java:如何访问包含在一个对象列表中的二维数组

public class matrixArray { 
    double[][] array; 
    public matrixArray(double[][] initialArray){ 
     array = initialArray; 
    } 
} 

我再用下面的实现了它:

public static ArrayList LUDecompose(double[][] A){ 

    ArrayList<matrixArray> LU = new ArrayList<>(); 
    double[][] L = new double[A.length][A.length]; 
    double[][] U = new double[A.length][A.length]; 

    for(int j=0; j<(A.length-1);j++){ 
     for(int i=(j+1); i<A.length; i++){ 

      double lower = A[i][j]/A[j][j]; 
      L[i][j] = lower; 

      double[] replacement = row_scalar_mult(lower,A[j]); 
      replacement = vector_add(replacement, A[i]); 

      row_replace(i, A, replacement); 
     } 
    } 

    LU.add(new matrixArray(L)); 
    LU.add(new matrixArray(A)); 

    return LU; 
} 

到目前为止好。现在,我想访问我喜欢的新ArrayList中的二维数组。当我尝试在我的主要方法,下面的代码,我得到的错误“不兼容的类型:对象不能转换为double [] []”:

double[][] L = LUDecompose(A).get(0); 
double[][] U = LUDecompose(A).get(0); 

OR

ArrayList LU = LUDecompose(A); 
double[][] L = LUDecompose(A).get(0); 
double[][] U = LUDecompose(A).get(0); 

所以我的问题是:如何访问“对象”以获取我珍贵的2D阵列?

回答

1

您需要在方法签名指定正确的返回类型:

public static ArrayList<matrixArray> LUDecompose(double[][] A){ 

注意使用ArrayList<matrixArray>而不仅仅是ArrayList

然后用

ArrayList LU = LUDecompose(A); 
double[][] L = LUDecompose(A).get(0).array; 
double[][] U = LUDecompose(A).get(0).array; 
+0

完美。只需要将第二个0更改为1.您的答案中使用了两个零,而不是迭代以获取下一个数组; – rocksNwaves

相关问题