问题描述
- 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. 定义了一个信息类,然后创建了信息类的数组,为什么每次需要往数组中读的时候都会报空指针错误?
解决方案
su[i].name = cin.next();
前面加上
su[i] = new Sinfo();
解决方案二:
su[i].name = cin.next();
前面加上
su = 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();
}
解决方案四:
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);
}
}
}
}
时间: 2024-08-31 08:33:03