如何用循环构造数组并初始化为1-5的值?现有代码报NullPointerException
问题分析与修复
为什么会触发NullPointerException?
你代码里的私有数组val默认是null(Java引用类型的初始值为null),构造函数里直接访问val.length,相当于读取null对象的属性,必然抛出空指针异常。另外,循环内还声明了同名局部变量val,完全没给成员变量赋值,逻辑完全偏离目标。
修复后的代码
要构造初始值为1到5的数组,正确写法如下:
public class Array { private int[] val; public Array() { // 先初始化数组长度为5,对应1-5共5个数值 val = new int[5]; // 循环给数组元素赋值1到5 for (int i = 0; i < val.length; i++) { val[i] = i + 1; } // 可选:打印数组内容验证结果 for (int i = 0; i < val.length; i++) { if (i > 0) { System.out.print(","); } System.out.print(val[i]); } } // 可选:测试用主方法 public static void main(String[] args) { new Array(); } }
关键修正点
- 先给成员变量
val分配内存:val = new int[5];,明确数组长度 - 利用循环索引生成1到5的数值:
val[i] = i + 1,索引从0开始,加1后刚好对应目标值 - 调整打印逻辑:第一个元素前不输出逗号,避免开头出现多余符号
内容的提问来源于stack exchange,提问作者cbjdfall
相关产品推荐
相关产品推荐

