我对Android比较陌生,我想创建一个大小增加的数组,我声明了这样一个数组:
private Sprite something[]; //sprite is my custom class that does sprites
我想添加这样的元素,但它给了我错误......
something[i++] = new Sprite(spriteSheet,numRows,numColumns,true,x,y);
//i is number of elements and Sprite(...) is the constructor
有人可以告诉我这里我做错了什么,为什么我得到了zygote错误和空指针异常? 谢谢!
答案 0 :(得分:1)
Java并不像Javascript那样真正起作用。根据{{1}},数组具有固定的大小,something = new Sprite[10];
的元素索引为something
然而,您可以使用0 to 9.
,然后List<Sprite> something = new ArrayList<Sprite>();
来实现您想要的功能。
编辑:
ArrayList的迭代工作原理如下:
something.add(new Sprite(spriteSheet, numRows, numColumns, true, x, y));
但是,以下声明:
List<Sprite> sprites = new ArrayList<Sprite>();
for(Sprite sprite : sprites)
{
sprite.print();
}
将抛出ConcurrentModificationException。
因此,您可以手动使用迭代器:
List<Sprite> sprites = new ArrayList<Sprite>();
for(Sprite sprite : sprites)
{
sprites.remove(sprite);
}
或者,当我需要在迭代期间修改列表中的元素时,我使用以下内容:
List<Sprite> sprites = new ArrayList<Sprite>();
Iterator<Sprite> iterator = sprites.iterator();
while(iterator.hasNext())
{
Sprite sprite = iterator.next();
...
iterator.remove();
}
虽然如果我没记错的话,迭代器是推荐的方法。