2012-04-13 106 views
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; 
    } 
+0

-1是的,这些存在。什么表达导致了它?它几乎总是*相同的东西*(缺少创建对象)并且“过于本地化”。 – 2012-04-13 20:57:11

回答

3

你应该首先初始化球员.....?

Players player = new Players(); 
3

您的播放器是不是在你打电话的那一刻初始化:

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

为了解决这个问题,你必须确保参考player实际指向球员的真实实例。这应该通过在您的代码中的逻辑位置添加:

player = new Players(); 

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

1

你没有实例化球员 所以这是造成NPE