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

创建Student类数组时触发java.lang.NullPointerException问题求助

解决Student数组初始化时的NullPointerException问题

嘿,这个空指针异常的原因其实很典型——你只是创建了一个Student类型的数组容器,但容器里的每个位置还没有真正放入Student对象,全都是null呢!

咱们来拆解下问题:

  • 当你执行Student[] array = new Student[numberofstudents];时,Java只是为数组分配了能容纳指定数量Student对象的内存空间,但每个array[i]的默认值都是null(因为Student是引用类型)。
  • 这时候直接去访问array[i].firstname,就相当于在对一个null对象调用属性,自然会抛出NullPointerException啦。

另外,我还发现你代码里有两个小错误:

  1. 属性名拼写错误:studentnumbere应该是studentnumber
  2. studentnumber是int类型,不能用Terminal.askString()来赋值,得用Terminal.askInt(),不然会有类型不匹配的问题。

修正后的完整代码

public static class Student {
    public String firstname;
    public String lastname;
    public int studentnumber;
}

public class main {
    public static void main(String[] args) {
        int numberofstudents = Terminal.askInt("How many students do you want to enter? ");
        Student[] array = new Student[numberofstudents];
        
        for (int i = 0; i < numberofstudents; i++) {
            // 关键步骤:先创建Student实例,再赋值属性
            array[i] = new Student();
            
            array[i].firstname = Terminal.askString("Enter student's firstname: ");
            array[i].lastname = Terminal.askString("Enter student's lastname: ");
            array[i].studentnumber = Terminal.askInt("Enter student's number: ");
        }
    }
}

核心要点总结

  • 引用类型数组初始化时,只是创建了数组本身,每个元素默认是null,必须手动为每个元素创建对应的对象实例。
  • 注意变量名的拼写准确性,避免因笔误导致的编译或运行错误。
  • 基本类型(如int)和字符串类型的输入方法要匹配,防止类型转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:54:02