You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Getter-Setter后私有变量未更新,输出null问题求助

问题原因及修复方案

核心问题

你在exitTutor()方法里重新创建了一个Student对象,这个对象和main方法中已经设置好姓名的scholar是完全独立的两个实例。新实例的studentName从未被赋值,所以调用results()时输出null。

修复方法

把main方法中已经初始化并设置好姓名的Student对象传递给exitTutor(),而不是在方法内新建对象。

修改后的完整代码:

class Main {
    public static void main(String[] args){
        int choice; 
        
        //Sets the student's name
        Student scholar = new Student();
        Scanner nameInput = new Scanner(System.in); 
        System.out.println("Please enter your name"); 
        String newName = nameInput.nextLine();
        scholar.setName(newName);
        exitTutor(scholar); // 传入已配置好的Student对象
    }

    // 修改方法参数,接收外部传入的Student实例
    public static void exitTutor(Student scholar){
        scholar.results(""); 
        System.exit(0);
    }
}

class Student {
    private String studentName;

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

    public void results(String result){
        System.out.println("Final Results for " + studentName);
    }
}

补充说明

你之前的可用代码没有这个问题,是因为当时没有在单独的方法里新建Student实例,而是直接使用了同一个已赋值的对象。这次新增exitTutor()时误创建了新实例,导致数据无法共享。

内容的提问来源于stack exchange,提问作者Takeshi DBXV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 23:27:04