- package com.kxg_2;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Comparator;
- import java.util.Scanner;
- import java.util.TreeSet;
- /*
- * 需求:键盘录入5个学生信息(姓名,语数英成绩),按照总分从高到底存入文本文件
- *
- * 分析:
- * A:创建学生类
- * B:创建集合对象
- * TreeSet<Student>
- * C:键盘录入学生信息存储到集合
- * D:遍历集合,把数据写到文本文件
- */
- public class StudentDemo {
- public static void main(String[] args) throws IOException {
- // 创建集合,并用比较器排序
- TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
- @Override
- public int compare(Student s1, Student s2) {
- int num = s1.getSum() - s2.getSum();
- int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num;
- int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2;
- int num4 = num3 == 0 ? s1.getEnglish() - s2.getEnglish() : num3;
- int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName())
- : num4;
- return num5;
- }
- });
- // 定义五次循环,循环一次录入一个对象
- for (int i = 1; i <= 5; i++) {
- // 录入学生姓名,语数英成绩
- Scanner sc = new Scanner(System.in);
- System.out.println("请录入第" + i + "位学生");
- System.out.println("姓名:");
- String name = sc.nextLine();
- 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("student.txt"));
- bw.write("学生信息如下:");
- bw.newLine();
- bw.flush();
- bw.write("学生姓名,语文成绩,数学成绩, 英语成绩");
- bw.newLine();
- bw.flush();
- // 遍历得到每个学生对象
- for (Student s : ts) {
- // 定义字符串缓冲区
- StringBuilder sb = new StringBuilder();
- // 添加学生信息添加到字符串缓冲区中
- sb.append(s.getName()).append(",").append(s.getChinese())
- .append(",").append(s.getMath()).append(",")
- .append(s.getEnglish());
- // 把字符串缓冲区转成字符串类型写入到文件中去
- bw.write(sb.toString());
- bw.newLine();
- bw.flush();
- }
- // 切记:释放资源,不然数据写不进去
- bw.close();
- }
- }
复制代码
|
|