在 Java 中将 2D 数组填充到 3D 数组
Filling in 2D Array into 3D Array in Java
我想写一个方法,我得到一个 3x6 workingArray(但也可能是 3x5、3x4...)和一个 3x3(也可能是不同大小)的 filteringArray,并在我放置的地方制作一个 3D 数组 (holdArrays)在第一个Array中做一个正方形(本例为3x3),然后移动一个位置并放入另一个3x3,直到workingArray的最后一列被覆盖。
不知何故,我在“//受影响的行”中得到了一个 nullPointerException,但我不明白为什么。所以我想知道我这样做是否正确,但我还没有找到有关如何将 2D 数组放入 3D 数组的资源。
示例:
1 2 3 4 1 2 3 2 3 4
5 6 7 8 to 5 6 7 and 6 7 8
9 1 2 3 9 1 2 1 2 3
private static void filtering(double[][] workingArray, double[][] filteringArray) {
// creating amount of holdArrays to work with filterArray
double[][][] holdArrays = new double[workingArray.length - filteringArray.length + 1][filteringArray.length][];
// filling in the parted workingArray into holdArrays
for (int i = 0; i < holdArrays.length; i++) {
for (int j = 0; j < filteringArray.length; j++) {
for (int k = 0; k < filteringArray[j].length; k++) {
holdArrays[i][j][k] = workingArray[j][k]; //affected line
}
}
}
}
未指定最后一个维度的大小。由于行
holdArrays[i][j][k]
尝试访问不存在的第 k 个元素,它会抛出空指针异常。
double[][][] holdArrays = new double[workingArray.length - filteringArray.length + 1][filteringArray.length][];
我想写一个方法,我得到一个 3x6 workingArray(但也可能是 3x5、3x4...)和一个 3x3(也可能是不同大小)的 filteringArray,并在我放置的地方制作一个 3D 数组 (holdArrays)在第一个Array中做一个正方形(本例为3x3),然后移动一个位置并放入另一个3x3,直到workingArray的最后一列被覆盖。
不知何故,我在“//受影响的行”中得到了一个 nullPointerException,但我不明白为什么。所以我想知道我这样做是否正确,但我还没有找到有关如何将 2D 数组放入 3D 数组的资源。
示例:
1 2 3 4 1 2 3 2 3 4
5 6 7 8 to 5 6 7 and 6 7 8
9 1 2 3 9 1 2 1 2 3
private static void filtering(double[][] workingArray, double[][] filteringArray) {
// creating amount of holdArrays to work with filterArray
double[][][] holdArrays = new double[workingArray.length - filteringArray.length + 1][filteringArray.length][];
// filling in the parted workingArray into holdArrays
for (int i = 0; i < holdArrays.length; i++) {
for (int j = 0; j < filteringArray.length; j++) {
for (int k = 0; k < filteringArray[j].length; k++) {
holdArrays[i][j][k] = workingArray[j][k]; //affected line
}
}
}
}
未指定最后一个维度的大小。由于行
holdArrays[i][j][k]
尝试访问不存在的第 k 个元素,它会抛出空指针异常。
double[][][] holdArrays = new double[workingArray.length - filteringArray.length + 1][filteringArray.length][];