dabocaiqq 2020-02-02 11:24 采纳率: 63.3%
浏览 168
已结题

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

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

  • 写回答

1条回答 默认 最新

  • sanshizhang 2020-02-18 16:13
    关注

    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;
      }
      

      }
      }

    评论

报告相同问题?

悬赏问题

  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题