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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:36:00