Java中数组的问题,总是报空指针错误

 class Sinfo {
    public String name;
    public int age;
    public int grade;

    public Sinfo() {
        // TODO Auto-generated constructor stub
    }
}

 Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        Sinfo[] su = new Sinfo[n];
        while (cin.hasNext()) {
            for (int i = 0; i < su.length; i++) {
                su[i].name = cin.next();
                su[i].age = cin.nextInt();
                su[i].grade = cin.nextInt();
            }

        }
  1. 1. 定义了一个信息类,然后创建了信息类的数组,为什么每次需要往数组中读的时候都会报空指针错误?

su[i].name = cin.next();
前面加上
su[i] = new Sinfo();

 for (int i = 0; i < su.length; i++) {
                su[i] = new Sinfo();//要先new一个对象
                su[i].name = cin.next();
                su[i].age = cin.nextInt();
                su[i].grade = cin.nextInt();
            }

su[i].name = cin.next();
前面加上
su = new Sinfo();

import java.util.Scanner;

public class App {
public String name;
public int age;
public int grade;

public static void main(String[] args) {
    Scanner cin = new Scanner(System.in);
    int n = cin.nextInt();

    App[] su = new App[n];
    while (cin.hasNext()) {
        for (int i = 0; i < su.length; i++) {
            su[i] = new App();
            su[i].name = cin.next();
            su[i].age = cin.nextInt();
            su[i].grade = cin.nextInt();
            System.out.println("su.name: "+su[i].name + ", su.age: "+su[i].age + ", su.grade: "+su[i].grade);
        }
    }
}

}