0

我有一個自定義類,並以經典的方式從它創建一個數組。但是當我嘗試訪問並初始化其單個元素時,我得到ArrayIndexOutOfBoundsException。簡而言之下面簡單的線條在Android的創造我的麻煩:當初始化數組對象時發生java.lang.ArrayIndexOutOfBoundsException

Coordinate[] test; 
test = new Coordinate[]{}; // I still get the error without having this line 
test[0]= new Coordinate(4,5); 

我需要初始化我的對象數組中以動態方式在for循環中。 所以test = new Coordinate[]{cord1,cord2};,雖然它的作品,不會解決我的問題。

P.S.我知道如何使用ArrayList對象,並在代碼的其他部分使用它。 但我有點被迫以經典的方式創建座標。

在此先感謝。

回答

1

你應該創建一個非空數組:

test = new Coordinate[size]; 

size> 0

否則,你的陣列是空的,test[0]使你得到了異常。

這也應該工作(假設你只希望你的數組中的一個元素):

Coordinate[] test = new Coordinate[]{new Coordinate(4,5)}; 
1

不指定數組的大小。

例如以便創建尺寸10的陣列,你會寫:

Coordinate[] test; 
test = new Coordinate[10]; // Creating array of size 10 
test[0]= new Coordinate(4,5); 

記住,「經典」陣列是固定大小。

+0

哪裏可以解決這個問題,我還不知道我的數組的大小。有沒有辦法動態創建它? – Ams 2014-09-19 07:04:23

+0

@ user2770916不幸的不是。爲了有一個動態大小的數組,你可以使用'ArrayList'。如果你真的需要使用'普通'數組,你需要估計一個數組的最大大小,並將其大小設置爲這個數。 – 2014-09-19 07:06:21

0

陣列的存儲器中連續塊,所以你應該提到的陣列大小(非陰性)

new Coordinate[size]; 
0

好像你忘了指定數組大小:

Coordinate[] test; 
test = new Coordinate[20]; // <-- array of size 20 
test[0]= new Coordinate(4,5); 

記住數組是固定大小。

0

test = new Coordinate[]{};相同test = new Coordinate[0];

您正在創建長度爲零的一個數組,然後嘗試訪問它的第一個成員。

您必須至少創建一個長度爲1陣列:

test = new Coordinate[0]; 

我們使用您的方案:

test = new Coordinate[]{new Coordinate(4,5)}; 
0

謝謝大家的答案。 我想我會以下列方式解決問題: 1.動態確定我的數組的大小 2.用這個大小初始化我的數組。