我是一名新手程序员。这可能是一个简单的问题,但我以前从未见过这个问题。首先,让我澄清一点,我甚至都没有试图操纵指数。以下是导致异常的代码部分:
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是什么。遗憾
答案 0 :(得分:1)
您发布的代码文件包含
行的循环for(int j: bumpercatcher) {
if(bumpercatcher[j]>5)
...
}
这是一个问题。这是一种与传统for循环不同的循环。它是一个扩展或增强的,也称为 foreach 。它读取“对于数组bumpercatcher do x中的每个整数j”。您正在获取元素j(值)并将其用作数组的索引。当您的值超过最大索引时,您将获得异常。
如果您想通过索引访问,请使用正确的for循环编写代码,或者尝试简单地重构逻辑,如
for (int j : bumpercatcher) {
if (j > 5) // j is the value!
...
}
答案 1 :(得分:0)
我不确定问题是什么,但更容易理解的方法是使用for循环:
for(int i = 0; i < bumpercatcher.length; i++) {
bumpercatcher[i] = 4;
}