Java打印教师列表所有值均为null的问题如何修复
问题原因
- 程序初始化阶段过早添加了空对象:你在
main方法启动时,刚实例化teachers对象(所有String类型字段默认值都是null),就立刻调用teach.add(new teacher(...))把空值封装的教师对象存入了列表,这行代码是完全多余的,相当于提前塞了一条全空的记录。 - 输入信息后未同步添加到列表:你在
case 1分支里获取用户输入的教师信息后,只是修改了全局teachers对象的属性,并没有把新的教师实例添加到teach列表中,列表里永远只有最开始那条空记录,打印自然全是null。
修复方法
第一步:删除多余的初始化添加代码
删掉main方法中List<teacher> teach = new ArrayList<>();下面的这行代码:
teach.add(new teacher(teachers.first_name, teachers.last_name, teachers.teacher_id, teachers.course));
第二步:在输入完成后添加对象到列表
在case 1的最后(用户输入完所有教师字段的代码后面),添加下面这行代码:
teach.add(new teacher(teachers.first_name, teachers.last_name, teachers.teacher_id, teachers.course));
可选优化建议(符合Java开发规范)
- 类名遵循大驼峰命名规则,将
teacher类改名为Teacher,student类改名为Student - 类的属性设置为私有,新增对应的setter方法,不要直接用public属性赋值,降低耦合
- 学生功能模块存在和教师模块完全相同的逻辑问题,后续开发学生功能时参考上面的方法修改即可
报错截图

内容的提问来源于stack exchange,提问作者J.R. BEATS
相关产品推荐
相关产品推荐

