【问题标题】:ArrayIndexOutOfBoundsException in 3D array3D 数组中的 ArrayIndexOutOfBoundsException
【发布时间】:2015-08-13 12:21:40
【问题描述】:

我正在尝试为神经网络制作一个锯齿状数组,这给了我一个超出范围的错误......

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][ ] 的大小。

我是在纸上做的,我认为这会奏效。

【问题讨论】:

  • 你试过调试你的程序了吗?
  • 哪一行出错了,具体是什么错误? (并且请格式化您的代码以使其更具可读性......)顺便说一句,您真的没有大括号吗?如果是这样,那就是问题所在......
  • @NateCook3 不确定您要实现什么,因为我不知道layer1、layer2 和layer3 持有什么。请参阅我的回答,了解您获得ArrayIndexOutOfBoundsException 的原因。
  • @JarrodRoberson 不太确定这是您标记的那个的副本。
  • 如果你已经有了答案,那么请不要对问题进行大刀阔斧的改动。

标签: java arrays multidimensional-array neural-network


【解决方案1】:
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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    相关资源
    最近更新 更多