【发布时间】:2012-02-12 01:12:31
【问题描述】:
我是一个新手程序员。这可能是一个简单的问题,但我以前从未见过。首先,让我澄清一下,我什至没有试图操纵索引。以下是导致异常的部分代码:
int[] bumpercatcher = new int[4];
//time variable that helps control events
int time = 0;
public void setup()
{
bumpercatcher[0]=4;
bumpercatcher[1]=4;
bumpercatcher[2]=4;
bumpercatcher[3]=4;
如您所见,我试图在程序开始时将它们全部设置为 4。这会导致 arrayindexoutofbounds 异常。如果我将它们都设置为 0~3 则没有问题(直到我稍后在程序中将它们设置为大于 3 的值)。没看懂。
-如果我将数组大小设置为 10 也没关系,我仍然会遇到相同的异常
- 如果我只设置一个值(即在索引 1 处,肯定在数组的范围内),这并不重要。同样的例外
我做错了什么吗?谢谢。
好吧,如果你想看一下,这里是整个代码(不要太长,1 节课,糟糕的编程习惯):http://dl.dropbox.com/u/33501308/Pong.java
这是您可以从中查看程序的 html(没什么可看的。它会立即冻结。):http://dl.dropbox.com/u/33501308/bin.zip
顺便说一句,我正在使用 eclipse。
我真的不知道 SSCEE 是什么。对不起
【问题讨论】:
-
请显示出现异常的代码。
-
这听起来就像你在某个地方使用元素的值作为索引。有点像
int x = bumpercatcher[0]; int someOther = bumpercatcher[x];。但是您提供的代码应该没有问题,我们需要更多地了解异常实际发生的位置。 -
当我设置这些变量时,它就发生了,程序只是冻结在那里。这部分是我初始化所有内容的地方。
-
没有看到实际的堆栈跟踪,也没有看到异常行在源代码中的位置,我们都只是在这里猜测。请更新您的帖子以包含这两条信息。
-
我的心理调试可能是准确的。在您的文件中,我看到了
for(int j: bumpercatcher) { if(bumpercatcher[j]>5) ... },这正是我最初的评论所针对的内容。j是数组的一个元素。您正在使用它作为索引。还有其他类似的循环。
标签: java arrays eclipse exception