Java自定义类数组输入数据时抛出java.lang.NullPointerException报错求解
问题排查与修复
空指针异常根因
Java中创建引用类型数组时,仅会初始化数组容器,数组内的所有引用元素默认值为null,你没有为arr数组的每个下标实例化Course对象,就直接调用arr[i]的setXXX()方法,就会触发java.lang.NullPointerException。
另外你现有代码还存在一处逻辑错误:第一个输入项为课程编码,但你调用了setCchour()方法,会把课程编码错误存入学分字段。
修复方式(无需调整Course类构造器)
你只需要在赋值循环的开头,为当前下标对应的数组元素实例化Course对象即可,同时修正方法调用错误,原冗余声明的Course c = new Course();全程未使用,可以直接删除:
// 原创建数组代码不变 Course arr[]=new Course[x]; // 删掉没用的 Course c =new Course(); 行 for (int i = 0; i < arr.length; i++) { // 新增行:为当前数组元素实例化Course对象 arr[i] = new Course(); System.out.println("Enter Course Code"); // 修正方法调用:用setCcode存储课程编码 arr[i].setCcode(s.nextInt()); System.out.println("Enter course Title"); arr[i].setCtitle(s.next()); System.out.println("Enter Course Credit hour"); arr[i].setCchour(s.nextInt()); }
内容的提问来源于stack exchange,提问作者Muhammad Talha
相关产品推荐
相关产品推荐

