我想制作一个2D数组数组,但是这里的成员指向了一个ArrayList,并按照他的建议编写了以下代码:
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中访问2D数组。当我在main方法中尝试以下代码时,我收到错误“不兼容的类型:对象无法转换为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数组?
答案 0 :(得分: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;