import java.util.Scanner;
class A{
int age;
public static void main(String[] args){
Scanner s=new Scanner(System.in);
A[] a=new A[4];
System.out.println("Enter the elements:");
for(A i:a){
i.age=s.nextInt();
}
}
}
在这段代码中,我希望用户提供输入,但它正在生成
Exception in thread "main" java.lang.NullPointerException
at A.main(a.java:10)
请指导我此错误。
答案 0 :(得分:2)
你已经初始化了数组,但也忘了初始化它的元素。
A[] a=new A[4];
for (int i = 0; i < a.length; i++) {
a[i] = new A();
}
请注意,只需执行new A[4];
即可创建数组,但单个A
对象引用(a[0]
,a[1]
等)仅初始化为null
。
如果您在查看原因时遇到问题,以下情况应该有所帮助。
A[] a = null;
// NO array object
System.out.println(Arrays.toString(a));
a = new A[4];
// Array object with NO elements
System.out.println(Arrays.toString(a));
for (int i = 0; i < a.length; i++) {
a[i] = new A();
}
// Array object with A() elements
System.out.println(Arrays.toString(a));
输出:
null
[null, null, null, null]
[A@15db9742, A@6d06d69c, A@7852e922, A@4e25154f]