概述
问题要求:
创建若干个学生对象,输入学生的姓名、学号、成绩,并将学生信息打印
报错代码
Scanner scanner = new Scanner(System.in);
System.out.println("输入多少个学生的信息?");
Student[] students = new Student[scanner.nextInt()];
for (int i = 0; i < students.length; i++) {
//输入学生的姓名、学号、成绩
System.out.println("输入第"+(i+1)+"个学生的信息");
System.out.print("输入姓名");
students[i].setName(scanner.next());
System.out.print("输入id");
students[i].setId(scanner.nextInt());
System.out.print("输入成绩");
students[i].setScore(scanner.nextInt());
}
for (int i = 0; i < students.length; i++) {
System.out.println(students[i].toString());
}
以上代码输运行完输入姓名之后会报空指针异常,其原因在于我们虽然创建了对象数组,但是没有对其进行了初始化。
注意: 这里只是给对象数组进行了初始化,并没有对该对象进行初始化。
例如:
Student[] students=new Student[10];
students 是对象数组名,它所表示该数组中一共有10个元素,每一个元素都是Student类的对象名,但只是对象名,并没有实例化,所以还必须为每一个元素实例化。
在上面的代码中没有对每一个元素进行实例化,你没有实例化就没有自己的内存空间,没有私人空间干啥都不好干嘛!所以这个对象就开始罢工,先给你来一手空指针异常,对象嘛,是要哄的,哄着哄着不就好了,你要声明我就给你声明,你要私人空间我就给你空间嘛,当然了,这里有十个对象,怎么着也得雨露均沾!要不然但凡有一个闹起来就不好受了
修改后的代码
for (int i = 0; i < students.length; i++) {
//输入学生的姓名、学号、成绩
System.out.println("输入第"+(i+1)+"个学生的信息");
students[i] = new Student();
System.out.print("输入姓名");
students[i].setName(scanner.next());
System.out.print("输入id");
students[i].setId(scanner.nextInt());
System.out.print("输入成绩");
students[i].setScore(scanner.nextInt());
}
最后
以上就是优秀跳跳糖为你收集整理的Java数组对象和空指针异常的问题的全部内容,希望文章能够帮你解决Java数组对象和空指针异常的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复