Java 再次出现空指针异常

Java 再次出现空指针异常,java,object,reference,nullpointerexception,initialization,Java,Object,Reference,Nullpointerexception,Initialization,不久前我问了同样的问题,有人告诉我初始化我的squareChecker变量,我就这样做了。由于某种原因,我仍然会得到相同的错误,而我并不知道。我花了整整一天的时间试图自己解决这个问题,但没有结果。有人知道我的问题是什么吗 我的普通模式类(其中我从square类调用方法并呈现内容): 这是我得到的错误: Exception in thread "main" java.lang.NullPointerException at data.src.Square.startGame(Square.

不久前我问了同样的问题,有人告诉我初始化我的squareChecker变量,我就这样做了。由于某种原因,我仍然会得到相同的错误,而我并不知道。我花了整整一天的时间试图自己解决这个问题,但没有结果。有人知道我的问题是什么吗

我的普通模式类(其中我从square类调用方法并呈现内容):

这是我得到的错误:

Exception in thread "main" java.lang.NullPointerException
    at data.src.Square.startGame(Square.java:112)
    at data.src.NormalMode.init(NormalMode.java:23)
    at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171)
    at org.newdawn.slick.ScalableGame.init(ScalableGame.java:69)
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
    at data.src.Core.main(Core.java:30)
NormalMode.Init()

g
定义为
图形g

startGame()
调用
g.drawString()


这使我得出结论,在将
g
传递给
startGame()
方法之前,您没有实例化它。

startGame
方法中只有一件事可以
null
。你为什么认为g(图形)会有一个值呢?不,(我可以看到)你在哪里得到一个图形参考@TMcKeown我不知道我在做什么。我仍然是一个新手,请原谅我犯了这些编程错误。好吧,我在square类中初始化了图形,但它仍然不起作用。我甚至将squareChecker更改为normalmode的update()方法,以查看它是否有效,它确实有效。问题是,即使游戏现在开始,这个方法也不会调用或不起作用,因为屏幕上没有出现字符串。这是一个完全不同的问题。我建议您使用调试器运行代码,看看您的代码是否符合预期的所有方法。
public class Square {

    private StateBasedGame game;
    boolean correct;
    boolean clickable;
    boolean clicked;
    boolean started;
    int squares;
    int squareX;
    int squareY;
    public Image squareIncorrect;
    public Image squareCorrect;

    //For drawing these images from other classes
    {
        try {
            squareIncorrect = new Image("res/squareIncorrect.png");
        } catch (SlickException e1) {

            e1.printStackTrace();
        }
        try {
            squareCorrect =  new Image("res/squareCorrect.png");
        } catch (SlickException e) {

            e.printStackTrace();
        }
    }

    public Square(GameContainer container) { }

    public boolean checkCorrect(){
        return correct;
    }
    public boolean checkClickable(){
        return clickable;
    }

    public boolean checkClicked(){
        return clicked;
    }

    public int returnNumberOfSquares(){
        return squares;
    }
    //Draw appropriate square on screen depending on the creatRandom. CREATE THE RANDOM FIRST!
        public void squareDraw(int x ,int y, Graphics g)throws SlickException{

            if(correct == true){
                g.drawImage(squareCorrect, x, y);
                started = true;
            }
            else if(correct == false){
                g.drawImage(squareIncorrect, x, y);
            started = true;
            }
    }

    public void createRandom(){

        Random rand = new Random();
        int sRand = rand.nextInt(2);

            if(sRand == 0){
                correct = false;
                clickable = true;
                clicked = false;
                System.out.println("This square is a phony!");
            }
            else if(sRand == 1){
                correct = true;
                clickable = true;
                clicked = false;
                System.out.println("This is a true Square!");
                squares = squares+1;
            }
        }


    public void youWin(int x, int y, Graphics g){
        if(squares == 0){
            g.drawString("You win!", x, y);
            try {
                wait(4000);
                game.enterState(0);
            } catch (InterruptedException e) {
                e.printStackTrace();
      }
    }
  }

    public void startGame(Graphics g){
        g.drawString("Remember the blue squares! The game will start in 5 seconds!", 200, 300);

    }
}
Exception in thread "main" java.lang.NullPointerException
    at data.src.Square.startGame(Square.java:112)
    at data.src.NormalMode.init(NormalMode.java:23)
    at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:171)
    at org.newdawn.slick.ScalableGame.init(ScalableGame.java:69)
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
    at data.src.Core.main(Core.java:30)