2012-02-12 59 views
0

我是新手程序員。這可能是一個簡單的問題,但我從來沒有見過這個。首先,讓我澄清一點,我甚至不試圖操縱指數。下面是導致異常的代碼的一部分:數組中的值(非索引)大於3會導致java.lang.ArrayIndexOutOfBoundsException

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班,不好的編程practies)整個代碼:http://dl.dropbox.com/u/33501308/Pong.java

下面是你可以從(不多見的程序的HTML它只是立即凍結。):http://dl.dropbox.com/u/33501308/bin.zip

順便說一句,我使用的是日食。

我真的不知道SSCEE是什麼。對不起

+0

請出示在出現異常的代碼寫一個適當的循環代碼。 – 2012-02-12 01:15:59

+0

它幾乎聽起來像你正在使用元素的值作爲索引的地方。有點像'int x = bumpercatcher [0]; int someOther = bumpercatcher [x];'。但是,你所提供的代碼應該沒有問題,我們需要更多地瞭解發生異常的位置。 – 2012-02-12 01:18:21

+0

恰好當我設置這些變量時,程序就凍結在那裏。這部分是我初始化一切的地方。 – kevinyoki 2012-02-12 01:21:12

回答

1

您發佈的代碼文件包括沿

線環
for(int j: bumpercatcher) { 
    if(bumpercatcher[j]>5) 
     ... 
} 

這是一個問題。這是一種不同於傳統for循環的循環。它是一個擴展或增強,也稱爲foreach。它讀取「對於陣列bumpercatcher do x中的每個整數j」。你正在把你的元素j(一個值)作爲數組的索引。當您的值超過最大索引時,您將得到一個異常。

,如果你想通過索引來訪問,或嘗試簡單的重組你的邏輯就像

for (int j : bumpercatcher) { 
    if (j > 5) // j is the value! 
     ... 
} 
+0

非常感謝。我從來沒有想到這一點。 – kevinyoki 2012-02-12 02:08:04

0

我不知道是什麼問題,但這樣做的更具可讀性的方式是用一個for循環:

for(int i = 0; i < bumpercatcher.length; i++) { 
    bumpercatcher[i] = 4; 
} 
相關問題