java - 方法访问 getter 时返回 null

标签 java

我一直在尝试将玩家姓名(使用 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/

相关文章:

java - Play Framework : How do I change active class on route change

java - DataLayer的业务逻辑、应用层放在哪里?

java - 即使将值分配给元素,输入数据也为空

java - 如何禁用 JTable 中的特定列

java - 如何识别请求中 EJB 的客户端或调用者?

java - WebTestClient 检查 jsonPath 是否包含子字符串

java - 在半索引实例处查找并替换

java - DDD (java) 聚合根和持久性

java.io.IOException : mark/reset not supported

java - 如何在 Spring 中注销特定用户?以编程方式