初始化数组对象时出现java.lang.ArrayIndexOutOfBoundsException

时间:2014-09-19 06:59:27

标签: java android arrays initialization indexoutofboundsexception

我有一个自定义类,我以经典的方式从中创建一个数组。但是当我尝试访问并初始化其各个元素时,我得到了ArrayIndexOutOfBoundsException。简而言之,以下简单的行为我在android中造成了麻烦:

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对象,我在代码的其他部分使用它。 但我有点不得不以经典的方式创建坐标。

提前感谢。

6 个答案:

答案 0 :(得分:1)

您应该创建一个非空数组:

test = new Coordinate[size];

size> 0

否则,您的数组为空,test[0]会导致您获得的异常。

这也应该有效(假设你只需要数组中的一个元素):

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

答案 1 :(得分:1)

您没有指定数组的大小。

例如,为了创建一个大小为10的数组,你可以写:

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

请记住,'经典'数组具有固定大小。

答案 2 :(得分:0)

数组是连续的内存块,所以你应该提到数组大小(非负)

new Coordinate[size];

答案 3 :(得分:0)

好像你忘了指定数组大小:

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

请记住,数组的大小是固定的。

答案 4 :(得分:0)

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

相同

您正在创建一个长度为零的数组,然后尝试访问其第一个成员。

您至少要创建一个长度为1的数组:

test = new Coordinate[0];

我们使用您的计划:

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

答案 5 :(得分:0)

谢谢大家的答案。 我想我会用以下方式解决问题: 1.动态确定我的数组的大小 2.用这个大小初始化我的数组。