高分悬赏,缺少下载分别错过!Java语言怎么实现?txt读取问题

高分悬赏,Java语言怎么实现?
从txt文件中读取10个学生的信息,包括姓名、年龄、语文、数学、英语
然后根据成绩平均分按照从大到小排序输出。
谁给我完整代码,我就采纳谁。

package com.eyecool.abis;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**

  • 假设不存在重名的情况
  • @author Administrator
    *
    */
    // 姓名|年龄|语文|数学|英语
    // 张三|18|98|99|90
    // 李四|19|98|90|87
    public class Demo {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Demo demo = new Demo();
    String path = "E:\demo.txt";
    List students = demo.getStudentInfo(path);
    // 接下来进行排序
    students.sort(new Comparator() {

        @Override
        public int compare(Object arg0, Object arg1) {
            // TODO Auto-generated method stub
            Student stu0 = (Student) arg0;
            Student stu1 = (Student) arg1;
            Double avg0 = stu0.getAverageScore();
            Double avg1 = stu1.getAverageScore();
            return -avg0.compareTo(avg1);//注意-符合
        }
    
    });
    // 打印输出
    for (Student student : students) {
        System.out.println("姓名:" + student.getName() + ",平均分:" + student.getAverageScore());
    }
    

    }

    public List getStudentInfo(String path) {
    File file = new File(path);
    BufferedReader br = null;
    List students = null;
    try {
    br = new BufferedReader(new FileReader(file));// 构造一个BufferedReader类来读取文件
    String s = null;
    int lineNum = 0;
    students = new ArrayList();
    while ((s = br.readLine()) != null) {// 使用readLine方法,一次读一行
    if (lineNum == 0) {// 姓名|年龄|语文|数学|英语
    lineNum++;
    continue;
    }
    Student student = createStudent(s);
    students.add(student);
    lineNum++;
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (br != null) {
    try {
    br.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    }
    return students;
    }

    public Student createStudent(String s) {
    // 此处只考虑严格的数据格式:张三|18|98|99|90,其他的未考虑
    String str[] = s.split("\|");
    String name = str[0];
    String age = str[1];
    String chineseScore = str[2];
    String matchScore = str[3];
    String englishScore = str[4];

    Student student = new Student();
    student.setName(name);
    student.setAge(age);
    student.setChineseScore(chineseScore);
    student.setMatchScore(matchScore);
    student.setEnglishScore(englishScore);
    // 计算平均分
    List<Double> scores = new ArrayList<Double>();
    scores.add(Double.valueOf(chineseScore));
    scores.add(Double.valueOf(matchScore));
    scores.add(Double.valueOf(englishScore));
    student.setAverageScore(countAvg(scores));
    return student;
    

    }

    public Double countAvg(List scores) {
    Double sum = 0.00;
    for (Double score : scores) {
    sum += score;
    }
    int size = scores.size();
    java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");
    return Double.valueOf(df.format(sum / size));
    }

    public class Student {
    public Student() {
    }

    private String name;
    private String age;
    private String chineseScore;
    private String matchScore;
    private String englishScore;
    private Double averageScore;
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getAge() {
        return age;
    }
    
    public void setAge(String age) {
        this.age = age;
    }
    
    public String getChineseScore() {
        return chineseScore;
    }
    
    public void setChineseScore(String chineseScore) {
        this.chineseScore = chineseScore;
    }
    
    public String getMatchScore() {
        return matchScore;
    }
    
    public void setMatchScore(String matchScore) {
        this.matchScore = matchScore;
    }
    
    public String getEnglishScore() {
        return englishScore;
    }
    
    public void setEnglishScore(String englishScore) {
        this.englishScore = englishScore;
    }
    
    public Double getAverageScore() {
        return averageScore;
    }
    
    public void setAverageScore(Double averageScore) {
        this.averageScore = averageScore;
    }
    

    }
    }