我有一个自定义类,我以经典的方式从中创建一个数组。但是当我尝试访问并初始化其各个元素时,我得到了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对象,我在代码的其他部分使用它。 但我有点不得不以经典的方式创建坐标。
提前感谢。
答案 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.用这个大小初始化我的数组。