首页 > 解决方案 > 将对象传递到数组列表时如何获得空指针异常?

问题描述

背景

万岁!皮DAYYY!我想做的是在屏幕上放置随机点。gui 在屏幕状态 0 中打开,当我按下 1 时,屏幕状态变为屏幕状态 1,理论上应该在屏幕上添加随机点。但是,它不起作用。

问题

因此,如果您查看“dotz.add(new Dot());”行 编译器将其标记为空指针异常,但我不确定为什么会这样,因为我正在传递 Dot 对象

主控制器代码在这里-

package piday;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.util.ArrayList;

import com.sun.glass.events.KeyEvent;

public class controllah extends GameDriverV4 {
    int state = 0;
    Font font = new Font("Helvetica Neue", Font.BOLD,50);
    Dot Dot = new Dot();
    ArrayList<Dot> dotz;
    int time = 0;
    int delay = 50000;
    public controllah() {

    }

    public static void main(String[] args) {
        controllah h = new controllah();
        h.start();
    }


    public void draw(Graphics2D win) {
        if (state == 0) {
            win.setColor(Color.BLACK);
            win.drawString("'MONTE CARLO'", 10, 200);
            win.drawString("'PRESS 1'", 10, 200+font.getSize()+10);
            if (GameDriverV4.Keys[KeyEvent.VK_1]) {
                state = 1;
            }
            win.drawString("'Needle Thing'", 10, 200+font.getSize()+10+50);
            win.drawString("'PRESS 2'", 10, 200+font.getSize()+10+50+15);
            if(GameDriverV4.Keys[KeyEvent.VK_2]) {
                state = 2;
            }
        }


        if (state == 1) {
            /*
            if (time>delay) {

                time = 0;
            }
            else {
                time ++;
            }
            */

            dotz.add(new Dot());
            for (int i = 0; i<dotz.size()-1; i++) {
                dotz.get(i).draw(win);
            }

        }

        if (state == 2) {

        }

    }
}

点目标代码在这里-

package piday;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.Random;

public class Dot {
    Color incolor = Color.BLACK;
    Color outcolor = Color.BLUE;
    boolean in = true;
    int x;
    int y;
    public Dot() {
        Random rand = new Random();
        this.x = rand.nextInt(800);
        this.y = rand.nextInt(800);
    }


    public void draw(Graphics2D g) {
        if (in) {
            g.setColor(incolor);
        }
        else {
            g.setColor(outcolor);
        }

        g.fillRect(x-1, y-1, 3, 3);

    }

}

我推断,因为我一直在尝试将一个新的“Dot”对象添加到数组列表“dotz”中,所以它会很好,因为新的“Dot”不是空对象

标签: javanullpointerexception

解决方案


推荐阅读