Java类Set方法传入非空参数后仍赋值为空问题求助
问题根源
错误出在Students类自定义的set(String data, int i)方法的参数传递错误:
- 当
i=1对应设置FName时,你传入的参数是当前对象的属性FName(初始化是空字符串),而非拆分得到的data参数 - 当
i=2对应设置LName时,同样错误传入了当前对象的属性LName而非data参数
只有StudentID的设置是正确的,所以后续调用getFName、getLName都会返回空值,对应你看到的打印空行。
修复代码
把set方法中对应分支的参数替换为传入的data即可:
public void set(String data, int i) { switch(i) { case 0: setStudentID(data); break; case 1: setFName(data); // 替换原错误参数FName为data break; case 2: setLName(data); // 替换原错误参数LName为data break; } }
额外优化建议
当前你把Students students = new Students();写在了while循环外部,每次循环会复用同一个对象,虽然逻辑上不会出错,但更合理的写法是把对象初始化放在while循环内部,每次处理一行数据就新建一个独立的Students对象,避免后续修改逻辑时出现旧数据残留问题:
while(input.hasNextLine()) { Students students = new Students(); // 移到循环内部 String line = input.nextLine(); // 剩余原有逻辑 }
内容的提问来源于stack exchange,提问作者Bureking
相关产品推荐
相关产品推荐

