类对象的数组和在foreach循环中访问

时间:2015-03-07 08:23:19

标签: java class foreach

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)

请指导我此错误。

1 个答案:

答案 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]