如何解决通过按鼠标左键添加新对象
得到了一个Object
实例(Sprites
)的数组,通过按鼠标左键得到了向数组添加新对象的方法:
private void addSprite() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
Sprite sprite = new Ball(x,y);
if (sprites[sprites.length - 1] == null){
sprites[sprites.length - 1] = sprite;
}else if (sprites[sprites.length - 1] != null){
Sprite[] temp = new Sprite[sprites.length * 2];
System.arraycopy(sprites,temp,sprites.length);
sprites = temp;
}
}
});
}
如果arr
已满,我将创建一个新的临时数组,其大小为sprites.length * 2
,并复制temporary array
中的所有元素,并更改链接sprites = temp
,得到了NullPointerException
。任务是仅使用数组而非ArrayList
添加新对象。
我在做什么错了?
解决方法
像这样工作:
private void addSprite() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
Sprite sprite = new Ball(x,y);
if (sprites[count] == null){
sprites[count] = sprite;
count++;
}else if (sprites[count] != null){
Sprite[] temp = new Sprite[sprites.length + 1];
System.arraycopy(sprites,temp,sprites.length);
temp[sprites.length] = sprite;
sprites = temp;
}
}
});
}
如果创建数组大小:sprites.length * 2
:
问题是Java尝试update
的{{1}}和render
null
个元素
如果创建array
并添加最后一个sprites.length + 1
元素,则数组中没有index
个元素,就可以了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。