Java声明int数组后赋值报java.lang.NullPointerException是什么问题?
问题根因
- Java中数组属于引用类型,
static int array [];仅声明了数组引用变量,默认初始值为null,既没有分配实际的内存空间,也没有指向任何实例化的数组对象。 - 对值为
null的数组引用执行下标赋值操作array[counter1]=j时,程序尝试访问空引用对应的内存地址,因此抛出java.lang.NullPointerException。
修复方法
使用数组前必须先完成初始化,指定数组长度。该场景下要存储的是input的因数,元素数量不可能超过input本身的数值,因此拿到input后直接初始化数组即可:
input = sc1.nextInt(); array = new int[input]; // 新增数组初始化代码
如果无法提前确定存储元素的数量,可改用ArrayList<Integer>实现动态扩容,无需提前指定长度。
内容的提问来源于stack exchange,提问作者Cassius
相关产品推荐
相关产品推荐

