java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java自定义类数组报null问题

Java自定义类数组报null的相关问题及解决

作者:Dwoura犀利

这篇文章主要介绍了Java自定义类数组报null的相关问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java自定义类数组报null问题

不要沿用c++的想法。

java的数组分基本数据类型和引用类型

解决方法

for(int i=0;i<10;i++)
{
    s[i]=new student();
}

可以理解为先创建了空数组,然后为每一个元素添加了属于它的属性。

实例:

设某一个班共有N(N=20)名学生,期末考试5门课程,请编一程序评定学生的奖学金,要求打印输出一、二等奖学金学生的学号、姓名和各门课成绩。       (奖学金评定标准是:总成绩超过全班总平成绩20%发给一个奖学金,超过全班总平成绩10%发给二个奖学金。)

Java自定义类二维数组出现NullPointerException错误

自定义的类

package com.hbq.bugs;
// MyClass 类
public class MyClass {
    public int s1;
    public int getS1() {
        return s1;
    }
    public void setS1(int s1) {
        this.s1 = s1;
    }
}

主函数

package com.hbq.bugs;
public class App {
    public static void main(String[] args) {
        MyClass [][] c=new MyClass[10][10];
        c[0][0].setS1(1);
    }
}

运行会出现

进入debug模式发现

c[0]的所有元素都是null。

这是由于引用对象不初始化默认都为null的原因。

所以会有一个长度为10的一维数组,每个一维数组的元素又是长度为10的一维数组,这个数组里的元素默认都为null。

所以要对每一行每一列进行实例化赋值开拓新空间。

package com.hbq.bugs;
public class App {
    public static void main(String[] args) {
        MyClass[][] c = new MyClass[10][10];
//        c[0][0].setS1(1);
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                c[i][j] = new MyClass();
            }
        }
        c[0][0].setS1(1);
        System.out.println(c[0][0].getS1());
    }
}

运行成功!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文