2012-12-10 41 views
3

ArrayIndexOutOfBoundsException異常試圖訪問我得到下面的代碼數組索引越界異常數據

for (int i=1; i<11; i++) { 
    int a[][] = new int[10][3]; 
double LeftTrim = 1.0; 
double RightTrim = 1.0; 

a [i][0]=(int) (LeftTrim*((i)*25)); 
a [i][1]=(int) (RightTrim*((i)*25)); 
a [i][2]= 5000; 

//leftWheel, rightWheel, Milliseconds 
myf.setWheelVelocities(a[i][0], a[i][1], a[i][2]); 
JOptionPane.showMessageDialog(null, + (a [i][0] + a [i][1])/2 + "wheel velocities" + " | " + a [i][2] + " Milliseconds" + " Click OK to continue..."); 
} 

的每次我到了第9個增量的Eclipse給我的錯誤

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10" 

我測試速度可達250,但是當我到達225,我點擊「確定」「單擊確定繼續......」這個錯誤顯示出來!我要去了數組邊界之類的東西?

編輯:速度速度必須從25,50,75 ... 250(所以十名全部)

謝謝你開始!

+1

大小10,從0到9.沒有[10] – Alfabravo

回答

9

i in a[i]的有效值是09。你的代碼迭代到10

此外,循環從1開始,而它的可能需要從0開始。

最後,你在循環內部分配2D數組的事實看起來很奇怪。可以將它移到循環外部,或者將它變成一個三元素的1D數組。

+0

嗨,對不起,我們必須從25開始速度(第一速度)。所以我會認爲循環應該從1開始。接下來的問題是我無法測試速度250.我可以做到225,但是當我按下250速度的「OK」時,程序結束了?我已經將它改爲(int i = 1; i <11; i ++)int a [] [] = new int [11] [3];請幫忙嗎?哦,速度不能超過250. – Adz

+0

這是正確的答案。一個10的大小從0到9,所以通常的格式是'for(int i = 0; i <10; i ++)'的形式。如果你想從25開始,你必須從'i = 0'開始,並使用'(i + 1)* 25'(更好的想法)或者從'i = 1'開始並訪問數組使用'[我 - 1]'(不太好的主意)。 –

+0

WOOOOOOO,它工作。謝謝你,我非常贊同你的選擇。 – Adz

2

您需要更改您的代碼

for (int i = 0; i < 10; i++) { 
} 

在Java中,數組索引開始於0