我一直在尝试将玩家姓名(使用 Scanner
)打印到屏幕上,但它一直给我 null
而不是用户输入的内容。
正如您在下面看到的,使用 playerName()
方法时,playerOneName
可以正确显示,但是当我尝试使用 startingHouse( )
方法,它显示 null
。
更新:添加解决方案:
必须在 Player_Information 类中添加以下代码:
public Player_Information(){
super();
playerName();
}
头等舱:
public class Player_Information {
Scanner inputName = new Scanner(System.in);
private String playerOneName;
void playerName() {
System.out.print("What is your name? - ");
playerOneName = inputName.nextLine();
System.out.println("Greetings " + playerOneName + "!\n");
}
public String getPlayerOneName() {
return playerOneName;
}
public void setPlayerOneName(String playerOneName) {
this.playerOneName = playerOneName;
}
}
二等:
public class Locations {
Player_Information plIn = new Player_Information();
public void startingHouse() {
System.out.println(plIn.getPlayerOneName() + ": Agh.. What happened..");
}
}
我指的是 Player_Information
类中的 getPlayerOneName()
,那么为什么它返回 null
?
谢谢:)
最佳答案
因为您从未初始化playerOneName,所以您得到了null。该字符串在 PlayerName() 方法中被初始化为 inputName.nextLine();
的值。为了在使用 getPlayerOneName() 方法时获得值,必须首先初始化变量playerOneName。在您的程序中,方法 PlayerName() 会初始化该变量,因此请首先调用该方法。
public class Locations {
Player_Information plIn = new Player_Information();
public void startingHouse() {
plIn.PlayerName(); // call this first to initialize playerOneName;
System.out.println(plIn.getPlayerOneName() + ": Agh.. What happened..");
}
}
处理此错误的更好方法是向您的 Player_Information 类添加一个构造函数,可以在其中初始化变量。沿着下面的代码行做一些事情......
/*add this to your Player_Information class at the beginning */
public Player_Information(){
super();
//one option is to set a value to playerOneName here...
playerOneName = "set whatever string value you want to use here";
//or...call PlayerName() here instead.
PlayerName();
}
关于java - 方法访问 getter 时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390654/