2010-03-23 72 views
1

我有奇怪的问题,我无法修复:多维数组和ArrayIndexOutOfBoundsException异常

字段:

private boolean[][][] gaps; 

构造(第1行):

gaps = new boolean[NOBARRICADES][WIDTH][HEIGHT]; 

构造函数(第二行):

for (int i = 0; i < NOBARRICADES; i++) { 

的Java抛出一个错误的二号线,说:螺纹

异常“主要” java.lang.ArrayIndexOutOfBoundsException

是否有任何与Java语法(错就错在这几行代码)或者我应该在其他地方寻找问题?

+0

假设'NOBARRICADES'是某个地方的一个常量int,那么对于您发布的用于引发异常的循环而言,这是不可能的。你可以发布它所做的一切的实际代码吗? – Tarka 2010-03-23 17:55:01

+2

既然在第二行没有数组引用,我怀疑你没有发布足够的代码给任何人来帮助你。 – bmargulies 2010-03-23 17:55:05

+0

您能向我们展示您实际将索引差距的位置吗?第二行实际上并不是异常的来源,你的循环声明很好。我会假设你用i引用了你的数组的错误维度。另外pro-tip:不要调用循环变量像i或j这样简单的事情,把它们称为“index”,“inner_index”,“first_index”,任何描述性的东西,特别是当你要嵌套循环时。 – marr75 2010-03-23 17:57:11

回答

1

您可能误读了错误输出。你的第二行甚至不访问数组 - 确保它不是引发异常的for循环体的第一行。此外,请确保您仅使用i来索引阵列的第一维

0

有时java编译器被一两行关闭。你可以检查它所说的错误是否在线附近的代码行,看看你是否看到任何东西。

+0

什么时候?在我的经验中,java编译器从来没有被“一两行”关闭。唯一的区别是,如果您从运行的服务器上下载源文件,并且您使用的FTP客户端插入换行符以不同的方式对其进行格式化。 – karlgrz 2010-03-23 18:09:36

+0

我使用Java源类时遇到此问题。我认为这是javadoc的问题。运行时会给出一个行号,如果我检查该行,它是来自其他方法。 – 2010-03-23 19:55:50

0

对不起,但你真的不想这样做。

多维数组永远不值得他们造成的困惑 - 他们根本没有正面的价值(POSSIBLE除了明显的,明显的x,y数组)。

我建议你尝试从一个二维数组列表或二维数组的对象(其中每个对象包含一个列表)开始。

相关问题