Yor*_*le_ -1 java arrays variables methods object
我一直在努力为朋友制作一款游戏,但是我player[i].setName(getName(pn));
在课堂Players
上上班时遇到了问题.我希望能够在列表中设置播放器的名称或更改它们.但我一直在这条线上遇到错误.这件事发生后,我改变了public
在类变量Player
从static
.
"worldhomicide.drinkinggame.main.Game.main(Game.java:25)中的worldhomicide.drinkinggame.PlayerInfo.Players.setPlayers(Players.java:16)中的线程"main"java.lang.NullPointerException中的异常"
任何帮助将不胜感激!我在下面发布了所有需要的代码
游戏类
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);
}
}
Run Code Online (Sandbox Code Playgroud)
球员类
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());
}
}
Run Code Online (Sandbox Code Playgroud)
类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;
}
}
Run Code Online (Sandbox Code Playgroud)
球员类
public class Player {
public String name;
public int score;
public void setName(String name){
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 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));
}
Run Code Online (Sandbox Code Playgroud)