2017-04-16 11 views
-1

私は友人のためのゲームを作ろうとしていましたが、Playersplayer[i].setName(getName(pn));という行が問題なく動作します。私は選手の名前を設定したり、リスト内で変更することができるようにしたい。しかし、私はこの行でエラーを取得し続けます。これは、Playerの変数publicstaticから変更した後に発生しました。 worldhomicide.drinkinggame.PlayerInfo.Players.setPlayers(Players.java:16)worldhomicide.drinkinggame.main.Game.main(ゲームで のメイン "java.lang.NullPointerExceptionが オブジェクト配列内のデータを変更する

「スレッドでの例外"。 java:25) "

ご協力いただければ幸いです!私は以下のすべての必要なコードを掲示した。

ゲームクラス

public class Game{ 

    public static void main(String[] args) { 

     MessageHandler.gameRules(); // Display Game Information 
     Players.getAmount();Players.setPlayers(); // Get player data 

     System.out.println("What player would you like to look up?"); 
     int choice = Integer.parseInt(EventHandler.keyboard.next()); choice -= 1; 
     System.out.println(Players.player[choice].name); 


    } 

} 

プレーヤークラス

public class Players extends EventHandler { 

    public static int playerAmount; 
    public static Player[] player; 

    public static void setPlayers(){  
     player = new Player[playerAmount]; 

     for(int i = 0; i < player.length; i++){ 
      int pn = i+1; 
      player[i].setName(getName(pn)); 
     } 
    } 

    public static void getAmount(){ 
     MessageHandler.playerAmount(); 
     playerAmount = Integer.parseInt(keyboard.next()); 
    } 


} 

クラスのEventHandler

public class EventHandler { 

    public static Scanner keyboard = new Scanner(System.in); 

    public static String getName(int playerNumber){ 
     System.out.println("What is player " + playerNumber + "'s name?"); 
     String name = keyboard.next();  
     return name; 

    } 

} 

プレーヤークラス

public class Player { 

    public String name; 
    public int score; 

    public void setName(String name){ 
     this.name = name; 
    } 

} 
+1

_「エラーが発生しています...」_エラーをGoogleと共有していない場合は、どのような助けを得ることができますか?あなたの投稿を編集し、該当する場合は完全なエラーメッセージとスタックトレースを含めてください。詳細については、[help]にアクセスし、[ask]をお読みください。 worldhomicide.drinkinggame.main.Game.main(Game.java:25)で –

+0

スレッドの例外worldhomicide.drinkinggame.PlayerInfo.Players.setPlayersで "主" java.lang.NullPointerExceptionが \t(Players.java:16) \t –

+0

コメントに重要な情報を投稿しないでください。それを元の質問に編集します。 –

答えて

7

あなたsetPlayers()方法では、ループ内で、あなたはplayer[i].setName()メソッドにアクセスする前に、Playerオブジェクトを作成していないことに注意してください。

for(int i = 0; i < player.length; i++){ 
    int pn = i+1; 
    player[i] = new Player(); //you need to create Player object 
    player[i].setName(getName(pn)); 
} 
+1

ありがとう!それは私に最大の頭痛を与えていました。それは今のように動作します! –

+0

また、Gameクラスのmainメソッドでは、Playersのオブジェクトを作成していません。 –

+0

彼はPlayersクラスの静的メソッドを使用しています。この場合、Playersオブジェクトを作成する必要はありません。私が間違っているなら、私を訂正してください。 @Abhishekkumar –

関連する問題