Java课程作业运行时讲师信息输出为null的问题如何解决?
问题修复方案
你代码里一共存在3处核心错误,按下方步骤修改即可解决输出null的问题:
1. 修复Instructor类的属性定义错误
原Instructor类的3个属性都加了static修饰符,属于类全局共享属性,不是每个讲师实例的独有属性,会导致所有讲师对象共用一套值,直接去掉static即可:
// 原错误代码 public static String firstName; public static String lastName; public static String officeNum; // 修改后 public String firstName; public String lastName; public String officeNum;
2. 修复Course类有参构造的赋值逻辑错误
原构造方法没有给类内的instructor成员变量赋值,反而调用了逻辑错误的setInstructor方法,直接把你传入的Instructor实例赋值给成员变量即可:
// 原错误代码 public Course(String name, Instructor inst, String univer) { this.setName(name); this.setInstructor(name, Instructor.lastName, Instructor.officeNum); this.setUniversity(univer); } // 修改后 public Course(String name, Instructor inst, String univer) { this.setName(name); this.instructor = inst; // 直接赋值传入的讲师实例 this.setUniversity(univer); }
3. (可选)修复Course类setInstructor方法的逻辑
如果后续需要单独修改课程的讲师信息,把方法调整为接收Instructor实例赋值的逻辑,避免直接操作其他类的属性:
// 原错误代码 public void setInstructor(String firstName, String lastName, String office) { Instructor.firstName = firstName; Instructor.lastName = lastName; Instructor.officeNum = office; } // 修改后 public void setInstructor(Instructor inst) { this.instructor = inst; }
修改完成后运行即可正常输出预期的讲师信息。
内容的提问来源于stack exchange,提问作者sevagb24
相关产品推荐
相关产品推荐

