按鼠标左键添加新对象
Adding new object by pressing left mouse
获得了 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, 0, temp, 0, sprites.length);
sprites = temp;
}
}
});
}
如果 arr
已满,我创建新的临时数组,大小为 sprites.length * 2
,并复制 temporary array
中的所有元素,然后更改 link 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, 0, temp, 0, sprites.length);
temp[sprites.length] = sprite;
sprites = temp;
}
}
});
}
如果创建数组大小:sprites.length * 2
:
问题是 java 尝试 update
和 render
null
元素 array
如果创建 sprites.length + 1
并添加最后一个 index
元素,则数组中没有 null
元素,它工作正常。
获得了 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, 0, temp, 0, sprites.length);
sprites = temp;
}
}
});
}
如果 arr
已满,我创建新的临时数组,大小为 sprites.length * 2
,并复制 temporary array
中的所有元素,然后更改 link 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, 0, temp, 0, sprites.length);
temp[sprites.length] = sprite;
sprites = temp;
}
}
});
}
如果创建数组大小:sprites.length * 2
:
问题是 java 尝试 update
和 render
null
元素 array
如果创建 sprites.length + 1
并添加最后一个 index
元素,则数组中没有 null
元素,它工作正常。