IO流综合题

键盘录入 3 个学生信息(姓名,语文成绩,数学成绩,英语成绩)。 要求按照成绩总分从高到低写入文本文件,最后在从文件中把读取数据显示在控制台 格式:姓名,语文成绩,数学成绩,英语成绩 举例:林青霞,98,99,100 控制台执行结果图:

 

 

public class Student {
   // 姓名
   private String name;
   // 语文成绩
   private int chinese;
   // 数学成绩
   private int math;
   // 英语成绩
   private int english;

   public Student() {
       super();
  }

   public Student(String name, int chinese, int math, int english) {
       super();
       this.name = name;
       this.chinese = chinese;
       this.math = math;
       this.english = english;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public int getChinese() {
       return chinese;
  }

   public void setChinese(int chinese) {
       this.chinese = chinese;
  }

   public int getMath() {
       return math;
  }

   public void setMath(int math) {
       this.math = math;
  }

   public int getEnglish() {
       return english;
  }

   public void setEnglish(int english) {
       this.english = english;
  }

   public int getSum() {
       return this.chinese + this.math + this.english;
  }
}




public class Demo {
   public static void main(String[] args) throws IOException {
       Scanner sc = new Scanner(System.in);
       TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
           @Override
           public int compare(Student o1, Student o2) {
               //成绩总分从高到低
               int num = o2.getSum() - o1.getSum();

               int num2 = num == 0 ? o1.getChinese() - o2.getChinese() : num;
               int num3 = num2 == 0 ? o1.getMath() - o2.getMath() : num2;
               int num4 = num3 == 0 ? o1.getEnglish() - o2.getEnglish() : num3;
               return num4;
          }
      });

       for (int i = 1; i <= 3; i++) {
           System.out.println("请录入第" + i + "个学生信息");
           System.out.println("姓名:");
           String name = sc.next();
           System.out.println("语文成绩:");
           int chinese = sc.nextInt();
           System.out.println("数学成绩:");
           int math = sc.nextInt();
           System.out.println("英语成绩:");
           int english = sc.nextInt();

           Student s = new Student();
           s.setName(name);
           s.setChinese(chinese);
           s.setMath(math);
           s.setEnglish(english);

           ts.add(s);
      }

       BufferedWriter bw = new BufferedWriter(new FileWriter("day14\\a.txt"));
       for (Student t : ts) {
           //把学生对象的数据拼接成指定格式的字符串
           //格式:姓名,语文成绩,数学成绩,英语成绩
           StringBuilder sb = new StringBuilder();
           sb.append(t.getName()).append(",").append(t.getChinese()).append(",").append(t.getMath()).append(",").append(t.getEnglish()).append(",").append(t.getSum());

           bw.write(sb.toString());
           bw.newLine();
           bw.flush();
      }
       bw.close();

       System.out.println("数据写入文件完毕");
       System.out.println("文件中的数据展示如下:");
       BufferedReader br = new BufferedReader(new FileReader("day14\\a.txt"));
       String line;
       while ((line = br.readLine()) != null) {
           String[] strArr = line.split(",");
           System.out.println(strArr[0] + "\t\t" + strArr[1] + "\t\t" + strArr[2] + "\t\t" + strArr[3]);
      }
       br.close();
  }
}

 

 

posted @ 2022-05-28 21:01  Aginbak  阅读(55)  评论(0编辑  收藏  举报