【问题标题】:Changing data in an Object Array更改对象数组中的数据
【发布时间】:2017-04-16 05:46:49
【问题描述】:

我一直在尝试为朋友制作游戏,但我无法让我的线路 player[i].setName(getName(pn)); 在课堂 Players 正常工作。我希望能够在列表中设置或更改玩家的姓名。但我一直在这条线上遇到错误。这发生在我将 Player 类中的 public 变量从 static 更改之后。

“线程“主”中的异常 java.lang.NullPointerException 在 worldhomicide.drinkinggame.PlayerInfo.Players.setPlayers(Players.java:16) 在 worldhomicide.drinkinggame.main.Game.main(Game.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());
    }


}

类事件处理程序

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;
    }

}

【问题讨论】:

  • "...我不断收到错误..." -- 如果您不与我们分享错误,您怎么能期望得到任何帮助? edit 您的帖子并包括完整的错误消息和堆栈跟踪(如果适用)。请访问help center 并阅读How to Ask 了解更多信息。
  • worldhomicide.drinkinggame.PlayerInfo.Players.setPlayers(Players.java:16) 的线程“main”java.lang.NullPointerException 中的异常 worldhomicide.drinkinggame.main.Game.main(Game.java :25)
  • 不要在 cmets 中发布重要信息。 edit 它进入你原来的问题。
  • 任何可以帮助我在对象播放器中编辑变量名的东西。

标签: java arrays variables object methods


【解决方案1】:

请注意,在您的 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));
}

【讨论】:

  • 非常感谢!这让我最头疼。以现在应该的方式工作!
  • 此外,在您的 Game 类主方法中,您没有为 Players 创建任何对象。
  • 他正在使用 Players 类的静态方法。所以在这种情况下不需要创建 Players 对象。如果我错了,请纠正我。 @Abhishekkumar
  • @Nourin.Eka - 你是对的。我错过了静态部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 2017-03-01
  • 1970-01-01
  • 2020-08-11
相关资源
最近更新 更多