“线程中的异常”;“主要”;编码中的java.lang.NullPointerException

“线程中的异常”;“主要”;编码中的java.lang.NullPointerException,java,Java,我很确定这些问题已经被问了数百万次,但不幸的是,我找不到答案 Exception in thread "main" java.lang.NullPointerException at com.bluebitgames.visualnovel.Game.initStatesList(Game.java:30) at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164) at org.newd

我很确定这些问题已经被问了数百万次,但不幸的是,我找不到答案

Exception in thread "main" java.lang.NullPointerException
    at com.bluebitgames.visualnovel.Game.initStatesList(Game.java:30)
    at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164)
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314)
    at com.bluebitgames.visualnovel.Game.main(Game.java:77)
我知道java.lang.NullPointerException意味着变量有一个空值,因此我必须更改它,但我真的不知道

package com.bluebitgames.visualnovel;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.UnicodeFont;
import org.newdawn.slick.font.effects.ColorEffect;
import org.newdawn.slick.state.StateBasedGame;

public class Game extends StateBasedGame {
        public static final int SCREEN_WIDTH        = 1024;
        public static final int SCREEN_HEIGHT        = 640;
        public static final String title        = "Visual Novel";
        public static final String version        = "";
        public static final String vDate        = "03/07/12";

        // States
        public static final int menu  = 0;
        public static final int play  = 1;

        // Main font
        public static UnicodeFont font;

        public Game(String title) {
                super(title);
                this.addState(new Play(play));
        }

        public void initStatesList(GameContainer gc) throws SlickException {
                this.getState(menu).init(gc, this);     //line 30
                this.getState(play).init(gc, this);
                this.enterState(menu);
        }



        @SuppressWarnings("unchecked")
        public static UnicodeFont mainFont(int size, String name) {
                if(name.equals("default")) {
                        name        = "tempesta";
                }
                UnicodeFont font;
                try {
                        font        = new UnicodeFont("res/fonts/"+name+".ttf", size, false, false);
                        font.addAsciiGlyphs();
                        font.addGlyphs(400, 600);
                        font.getEffects().add(new ColorEffect(java.awt.Color.WHITE));
                        font.loadGlyphs();
                        return font;
                } catch(SlickException e) {
                        System.out.println("Could not load font.");
                        e.printStackTrace();
                        return null;
                }

        }

        public static void main(String[] args) {
                String os        = System.getProperty("os.name");
                if(os.contains("Windows")) {
                        os        = "windows";
                } else if(os.contains("Mac")) {
                        os        = "macosx";
                } else {
                        os        = "linux";
                }

                System.setProperty("org.lwjgl.librarypath",System.getProperty("user.dir") + "/lib/natives/"+os);
                AppGameContainer agc;
                try {
                        agc        = new AppGameContainer(new Game(title+" v"+version));
                        agc.setDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, false);
                        //agc.setFullscreen(true);
                        agc.setTargetFrameRate(60);
                        agc.setShowFPS(true);
                        agc.setVSync(true);
                        agc.start();      //line 77
                } catch(SlickException e) {
                        e.printStackTrace();
                }
        }
}
(StateBasedGame和AppGameContainer是一个名为'Slick'的.jar类,我不知道如何为它编写代码。对不起!)

我希望有人能帮我解决这个问题


编辑:很抱歉。刚刚编辑了它。

我不知道,但是您似乎在构造函数中添加播放状态,而不是菜单状态,并且当您尝试调用菜单状态的方法时,似乎会抛出NPE。我是SWAG,但也许您也应该在构造函数中初始化菜单状态


如果这是错误的,请原谅1000次,并删除一个答案。

我不知道,但您似乎在构造函数中添加了播放状态,而不是菜单状态,并且当您尝试调用菜单状态的方法时,似乎会抛出NPE。我是SWAG,但也许您也应该在构造函数中初始化菜单状态


如果这是错误的,请原谅1000次,并删除一个答案。

我不知道,但您似乎在构造函数中添加了播放状态,而不是菜单状态,并且当您尝试调用菜单状态的方法时,似乎会抛出NPE。我是SWAG,但也许您也应该在构造函数中初始化菜单状态


如果这是错误的,请原谅1000次,并删除一个答案。

我不知道,但您似乎在构造函数中添加了播放状态,而不是菜单状态,并且当您尝试调用菜单状态的方法时,似乎会抛出NPE。我是SWAG,但也许您也应该在构造函数中初始化菜单状态


如果这是错误的,请原谅1000次,并删除答案。

您似乎缺少“菜单”状态。我建议尝试在构造函数中添加这样的状态,应该像下面这样简单

public Game(String title) {
  super(title);
  this.addState(new Play(play));
  this.addState(new Menu(menu)); // Assuming you have a Menu somewhere...
}

您似乎缺少“菜单”状态。我建议尝试在构造函数中添加这样的状态,应该像下面这样简单

public Game(String title) {
  super(title);
  this.addState(new Play(play));
  this.addState(new Menu(menu)); // Assuming you have a Menu somewhere...
}

您似乎缺少“菜单”状态。我建议尝试在构造函数中添加这样的状态,应该像下面这样简单

public Game(String title) {
  super(title);
  this.addState(new Play(play));
  this.addState(new Menu(menu)); // Assuming you have a Menu somewhere...
}

您似乎缺少“菜单”状态。我建议尝试在构造函数中添加这样的状态,应该像下面这样简单

public Game(String title) {
  super(title);
  this.addState(new Play(play));
  this.addState(new Menu(menu)); // Assuming you have a Menu somewhere...
}


就像你必须读过的任何NPE问题一样,关键是确定哪一行抛出了它。那是哪一个呢?哪一行是第30行,
Game.java:30
正如异常stacktrace告诉您的那样?正如我所想,那么也许我的答案和Elliott的答案都是正确的。正如您必须阅读的任何NPE问题一样,关键是确定哪一行抛出了它。那是哪一个呢?哪一行是第30行,
Game.java:30
正如异常stacktrace告诉您的那样?正如我所想,那么也许我的答案和Elliott的答案都是正确的。正如您必须阅读的任何NPE问题一样,关键是确定哪一行抛出了它。那是哪一个呢?哪一行是第30行,
Game.java:30
正如异常stacktrace告诉您的那样?正如我所想,那么也许我的答案和Elliott的答案都是正确的。正如您必须阅读的任何NPE问题一样,关键是确定哪一行抛出了它。那是哪一个呢?哪一行是第30行,
Game.java:30
正如异常stacktrace告诉您的那样?正如我所想,那么也许我和Elliott的答案都是正确的。非常感谢您的回答。说到Java,我真是个笨蛋,因为我刚从一种编码类型转换到另一种编码类型。再次感谢!非常感谢你的回答。说到Java,我真是个笨蛋,因为我刚从一种编码类型转换到另一种编码类型。再次感谢!非常感谢你的回答。说到Java,我真是个笨蛋,因为我刚从一种编码类型转换到另一种编码类型。再次感谢!非常感谢你的回答。说到Java,我真是个笨蛋,因为我刚从一种编码类型转换到另一种编码类型。再次感谢!谢谢你的回答。我犯了一个很大的错误。谢谢你指出这一点。@Colby,为什么每个人都知道SWAG是什么,一个愚蠢的野驴,…我猜。对,那,;这是滴答声!谢谢你的回答。我犯了一个很大的错误。谢谢你指出这一点。@Colby,为什么每个人都知道SWAG是什么,一个愚蠢的野驴,…我猜。对,那,;这是滴答声!谢谢你的回答。我犯了一个很大的错误。谢谢你指出这一点。@Colby,为什么每个人都知道SWAG是什么,一个愚蠢的野驴,…我猜。对,那,;这是滴答声!谢谢你的回答。我犯了一个很大的错误。谢谢你指出这一点。@Colby,为什么每个人都知道SWAG是什么,一个愚蠢的野驴,…我猜。对,那,;这是滴答声!