老是空指针异常,改了好些遍,都没成功,大家帮我看一下吧

Student.java文件
package homework;
import java.util.Map;
public class Student {
    private String stuId;
    private String stuName;
    private Map<String, Double> map;
    public String getStuId() {
        return stuId;
    }
    public void setStuId(String stuId) {
        this.stuId = stuId;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public Map<String, Double> getMap() {
        return map;
    }
    public void setMap(Map<String, Double> map) {
        this.map = map;
    }
}
StudentInfo.java文件
package homework;


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class StudentInfo {


    public Student[] getStudentInfo() {
        Scanner sc = new Scanner(System.in);
        Student stu[] = new Student[5];
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new FileWriter("stu.txt"));
            for (int i = 0; i < stu.length; i++) {
                String temp    = "";
                double real = 0;        
                System.out.println("请输入学号:");
                temp = sc.next();
                stu[i].setStuId(temp);
                bw.write(temp + " ");
                System.out.println();
                System.out.println("请输入姓名:");
                temp = sc.next();
                stu[i].setStuName(temp);
                bw.write(temp + " ");
                System.out.println();
                Map<String, Double> map = new HashMap<String, Double>();
                System.out.println("请输入语文成绩:");
                real = sc.nextDouble();
                map.put("chinese", real);
                bw.write(temp + " ");
                System.out.println();
                System.out.println("请输入数学成绩:");
                real = sc.nextDouble();
                map.put("math", real);
                bw.write(temp + " ");
                System.out.println();
                System.out.println("请输入英语成绩:");
                real = sc.nextDouble();
                map.put("english", real);
                bw.write(temp + " ");
                bw.newLine();
                stu[i].setMap(map);
                System.out.println();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (bw != null) {
                    bw.flush();
                    bw.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return stu;
    }


    public void aveScores(Student[] stu) {
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new FileWriter("stu.txt",true));
            System.out.print("语文平均成绩是:");
            for (int i = 0; i < stu.length; i++) {
                double chineseScore = 0;
                chineseScore += stu[i].getMap().get("chinese");
                double aveScore = chineseScore/3;
                System.out.println(aveScore);
                bw.write("语文平均成绩是:" + aveScore);
                bw.newLine();
            }
            System.out.print("数学平均成绩是:");
            for (int i = 0; i < stu.length; i++) {
                double mathScore = 0;
                mathScore += stu[i].getMap().get("math");
                double aveScore = mathScore/3;
                System.out.println(aveScore);
                bw.write("数学平均成绩是:" + aveScore);
                bw.newLine();
            }
            System.out.print("英语平均成绩是:");
            for (int i = 0; i < stu.length; i++) {
                double englishScore = 0;
                englishScore += stu[i].getMap().get("english");
                double aveScore = englishScore/3;
                System.out.println(aveScore);
                bw.write("英语平均成绩是:" + aveScore);
                bw.newLine();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (bw != null) {
                    bw.flush();
                    bw.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    public static void main(String[] args) {
        StudentInfo si = new StudentInfo();
        Student stu[] = si.getStudentInfo();
        si.aveScores(stu);
    }
}


D:\editplus>java homework.StudentInfo
请输入学号:
1000
Exception in thread "main" java.lang.NullPointerException
        at homework.StudentInfo.getStudentInfo(StudentInfo.java:23)
        at homework.StudentInfo.main(StudentInfo.java:116)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值