0

我正在制作一个游戏,我有几个不同的课程,因为我不喜欢把所有东西都放在一个里面。我有一个 GameView 类和一个玩家类。问题是我正在从 GameView 调用玩家类中的方法。但它给了我一个空指针错误。下面是我的代码:

GameVie 类:

Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
JLabel player1Lbl = new JLabel("Player 1");
p2.add(player1Lbl, BorderLayout.WEST);
player.enterNameP1(); //Having an error here.
player1Lbl.setText(player.enterNameP1());

球员等级:

public class Players
{
    //storing the player 1 name
    private String p1name;
    //storing the player 2 name
    private String p2name;

    /**
     * Constructor for objects of class Players
     */
    public Players()
    {
        this.p1name = p1name;
        this.p2name = p2name;
    }

    /**
     *Enter the player 1 name in a dialog box
     */
    public String enterNameP1() //It was public void before but it wasnt accepting a void method in the gameView so I changed it to String
    {
        this.p1name = JOptionPane.showInputDialog("Please enter player 1 name","Specify name");
        return p1name;
    }
4

3 回答 3

3

你应该先初始化播放器.....?

Players player = new Players(); 
于 2012-04-13T20:56:41.930 回答
3

在您调用时,您的播放器未初始化:

player.enterNameP1(); //Having an error here.

要解决这个问题,您必须确保引用player实际上指向 Player 的真实实例。这应该通过在代码中的逻辑位置添加以下内容来完成:

player = new Players();

这就是您得到 NullPointerException 的原因。当您从特定对象调用方法时,必须初始化该对象(这意味着指针player指向该类的实际实例Players)。

于 2012-04-13T20:56:49.117 回答
1

你没有实例化播放器 所以它是null导致 NPE

于 2012-04-13T20:57:28.830 回答