java类对象数组,空指针异常,求解

java类对象数组,空指针异常,求解

问题描述:

问题遇到的现象和发生背景

1、创建一个Student类,在该类中,定义一些成员变量,如姓名、学号、班级、学校、成绩;同时,定义一些成员方法,比如:听课、看书、吃饭、自我介绍等;

2、在第一题的基础上,创建一个数组,数组类型为Student类;
要求一:然后通过for循环,给该数组中元素进行赋值,同时给每名同学的成绩进行赋值;
要求二:遍历该数组,将每名同学的成绩输出
要求三:使用冒泡排序,按照成绩大小,对学生进行排序,然后打印输出学生对应的学号和成绩

问题相关代码,请勿粘贴截图

public class Student {
public String name ;
public int id;
public String School;
public int score;

public void listen() {
    System.out.println("我能听课");
}
public void dohomework() {
    System.out.println("我能写作业");
}
public void intorduce() {
    System.out.println("我叫:"+name+",我的学校是:"
            +School+",我的学号是:"+id
            +",我的成绩是:"+score);
}

}


import java.util.Scanner;

public class Do {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Student[]arr=new Student[5];
    Scanner input=new Scanner(System.in);
    for(int i=0;i<arr.length;i++) {
        System.out.println("请输入名字");
        arr[i].name=input.next();
        
        arr[i].School="肥乡一中";
        System.out.println("请输入成绩");
        arr[i].score=input.nextInt();
        arr[i].id=i+1;
        
    }
    for(int t=0;t<arr.length;t++){
        arr[t].intorduce();
    }
    
}

}

运行结果及报错内容

空指针异常

我的解答思路和尝试过的方法
我想要达到的结果

能把数据输入进去

你只创建了数组,并没有实例化类,加一行代码,arr[i] = new Student();

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Student[]arr=new Student[5];
    Scanner input=new Scanner(System.in);
    for(int i=0;i<arr.length;i++) {
        arr[i] = new Student();
        System.out.println("请输入名字");
        arr[i].name=input.next();
        
        arr[i].School="肥乡一中";
        System.out.println("请输入成绩");
        arr[i].score=input.nextInt();
        arr[i].id=i+1;
        
    }
    for(int t=0;t<arr.length;t++){
        arr[t].intorduce();
    }
    
}

每次需要创建学生对象。

public static void main(String[] args) {
    Student[]arr=new Student[5];
    Scanner input=new Scanner(System.in);
    for(int i=0;i<arr.length;i++) {
        Student stu=new Student();
        System.out.println("请输入名字");
        stu.name=input.next();
        stu.School="肥乡一中";
        System.out.println("请输入成绩");
        stu.score=input.nextInt();
        stu.id=i+1;
        arr[i]=stu;
    }
    for(int t=0;t<arr.length;t++){
        arr[t].intorduce();
    }
}

你的数组存的是对象的信息,你需要每一次在存对象信息的时候new一个对象,再给对象的属性赋值,然后再将这个对象存入数组。