首页 > 解决方案 > 按鼠标左键添加新对象

问题描述

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,并复制 a 中的所有元素temporary array,并更改链接sprites = temp,我得到了NullPointerException. 任务仅使用数组添加新对象,而不是ArrayList.

我究竟做错了什么?

标签: javaarraysswingnullpointerexception

解决方案


像这样工作:

   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尝试updaterender null元素array 如果创建sprites.length + 1并添加最后一个index元素,则数组中没有null元素,它工作正常。


推荐阅读