0

私はゲームを作っています。すべてを1つにまとめたくないので、いくつかの異なるクラスを持っています。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 に答える