3D 数组中的 ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException in 3D array

我正在尝试为神经网络制作一个锯齿状数组,这给了我一个越界错误...

int[] sizes = {
    layer1, layer2, layer3
};
int k = sizes.length - 1;
double[][][] net = new double[k][][];
int i;
for (i = 0; i < k; i++)
   net[i] = new double[sizes[i]][];
for (int j = 0; j < sizes[i]; j++)
   net[i][j] = new double[sizes[i + 1]];

net[x][ ][y] 中 y 的大小应等于 net[x+1][y][ ] 的大小。

我是在纸上做的,我认为这行得通。

int[] sizes = {
    layer1, layer2, layer3
};
int k = sizes.length - 1;

因此,k 等于 2。

int i;
for (i = 0; i < k; i++)
   net[i] = new double[sizes[i]][];

循环后 i 等于 2.

for (int j = 0; j < sizes[i]; j++)
   net[i][j] = new double[sizes[i + 1]];
                          ^^^^^^^^^^^^
                          ArrayIndexOutOfBoundsException

Boom,sizes[i + 1] 抛出 ArrayIndexOutOfBoundsException,因为 sizes 只有索引 0、1 和 2,而您指的是 sizes[3]