java从2D double[]数组获取子数组
我试图从double[][]
3x3矩阵中得到一个子数组(用于计算行列式)。我一直收到ArrayIndexOutOfBoundsException
知道为什么吗
public double[][] get2DSubArray(double[][] largeArray, int rowStartIndex, int rowEndIndex, int columnStartIndex, int columnEndIndex) {
double[][] subArray = new double[rowEndIndex-rowStartIndex+1][columnEndIndex-columnStartIndex+1];
for (int row = rowStartIndex; row < rowEndIndex; row++) {
subArray[row] = Arrays.copyOfRange(largeArray[row], columnStartIndex, columnEndIndex);
}
return subArray;
}
# 1 楼答案
看起来它与数组初始化有关,传递给该方法的
array
似乎不是3x3。例如,以下情况不会产生例外:更新
尽管上述解决方案不会产生异常,但也不会产生正确的输出。主要原因如下:
Arrays.copyOfRange
方法的第三个参数是独占的,所以我们必须传递columnEndIndex+1
才能让它工作Arrays.copyOfRange
分配给subArray[row]
,而不是将其分配给subArray[<zero based index>]
以下解决方案确实有效: