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

对象数组触发NullPointerException问题求助(附代码与错误栈)

问题原因及修复方案

核心错误

1. 对象数组元素未初始化

创建数组Student [] std = new Student [3];时,Java仅为数组本身分配内存空间,数组内的每个元素默认值是null——也就是没有实际创建Student实例。直接调用std[0].setName()时,因为std[0]是null,触发了NullPointerException。

2. 循环操作固定索引

循环变量是i,但代码始终操作std[0],即便修复初始化问题,也只会重复修改第一个对象,无法遍历处理整个数组的3个元素。

修复后的Main类代码

public class Main {
    public static void main(String[] args) throws Exception{

        Student [] std = new Student [3];
        for (int i = 0; i < std.length; i++) {
            System.out.println("student "+ (i+1));
            // 先为当前索引位置创建Student对象实例
            std[i] = new Student();
            std[i].setName();
            std[i].setMarks();
            std[i].INFO();
        }
    }
}

额外优化建议

  • 命名规范:Java成员变量建议用小驼峰命名,比如把Name改为name、Marks改为marks,符合行业编码习惯。
  • Scanner资源管理:Student类中声明的Scanner in建议在使用完成后关闭,或者在Main类中统一创建Scanner并传递给Student的方法,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Zaid Bakdash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:05:06