需求:
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
分析:
A:创建学生类 B:创建集合对象 TreeSet<Student> C:键盘录入学生信息存储到集合 D:遍历集合,把数据写到文本文件
首先创建个学生类
1 package zl_Test; 2 /** 3 * 这是个记录学生成绩类 4 * @author LZL 5 * 6 */ 7 public class Student { 8 private String name; 9 private int chinese;10 private int math;11 private int english;12 13 14 public Student() {15 super();16 // TODO Auto-generated constructor stub17 }18 19 20 public Student(String name, int chinese, int math, int english) {21 super();22 this.name = name;23 this.chinese = chinese;24 this.math = math;25 this.english = english;26 }27 28 29 public String getName() {30 return name;31 }32 33 34 public void setName(String name) {35 this.name = name;36 }37 38 39 public int getChinese() {40 return chinese;41 }42 43 44 public void setChinese(int chinese) {45 this.chinese = chinese;46 }47 48 49 public int getMath() {50 return math;51 }52 53 54 public void setMath(int math) {55 this.math = math;56 }57 58 59 public int getEnglish() {60 return english;61 }62 63 64 public void setEnglish(int english) {65 this.english = english;66 }67 68 public int getsum() {69 return this.chinese + this.english + this.math;70 71 72 }73 74 }
具体实现类:
1 package zl_Test; 2 3 import java.io.BufferedWriter; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 import java.util.Comparator; 7 import java.util.Scanner; 8 import java.util.TreeSet; 9 10 public class StudentDemo {11 12 public static void main(String[] args) throws IOException {13 // 创建集合对象14 TreeSetts = new TreeSet (new Comparator () {15 // 比较器16 public int compare(Student s1, Student s2) {17 18 int num1 = s2.getsum() - s1.getsum();19 int num2 = num1 == 0 ? s2.getChinese() - s1.getChinese() : num1;20 int num3 = num2 == 0 ? s2.getMath() - s1.getMath() : num2;21 int num4 = num3 == 0 ? s2.getName().compareTo(s1.getName())22 : num3;23 return num4;24 25 }26 });27 28 // 键盘录入学生信息29 for (int x = 0; x < 5; x++) {30 Scanner sc = new Scanner(System.in);31 32 System.out.println("请输入学生姓名:");33 String name = sc.nextLine();34 System.out.println("请输入语文成绩");35 int chinese = sc.nextInt();36 System.out.println("请输入数学成绩");37 int math = sc.nextInt();38 System.out.println("请输入英语成绩");39 int english = sc.nextInt();40 41 // 创建学生对象,调用学生类42 Student s = new Student();43 s.setName(name);44 s.setChinese(chinese);45 s.setMath(math);46 s.setEnglish(english);47 48 // 把信息添加到集合中49 ts.add(s);50 }51 52 // 文本打开能看得懂的信息,用缓冲字符流53 // 创建缓冲字符输出流对象54 BufferedWriter bw = new BufferedWriter(new FileWriter("student.txt"));55 // 先写文本里面的内容56 bw.write("学生成绩记录");57 bw.newLine();58 bw.flush();59 bw.write("语文成绩" + "\t" + "数学成绩" + "\t" + "英语成绩");60 bw.newLine();61 bw.flush();62 63 // 遍历集合,把得到的数据添加到文件中64 for (Student student : ts) {65 // 对得到的信息进行拼接66 StringBuilder sb = new StringBuilder();67 sb.append(student.getName() + "\t\t")68 .append(student.getChinese() + "\t\t")69 .append(student.getMath() + "\t\t")70 .append(student.getEnglish());71 bw.write(sb.toString());72 bw.newLine();73 }74 bw.close();75 System.out.println("学生成绩存储完毕");76 }77 }