- public class Student implements Comparable<Student>
- {
- private String name;
- private double yuwen;
- private double math;
- private double english;
- public Student(String name,double yuwen, double math, double english)
- {
- super();
- this.name=name;
- this.yuwen = yuwen;
- this.math = math;
- this.english = english;
- }
- public String getName()
- {
- return name;
- }
- public void setName(String name)
- {
- this.name = name;
- }
- public double getYuwen()
- {
- return yuwen;
- }
- public void setYuwen(double yuwen)
- {
- this.yuwen = yuwen;
- }
- public double getMath()
- {
- return math;
- }
- public void setMath(double math)
- {
- this.math = math;
- }
- public double getEnglish()
- {
- return english;
- }
- public void setEnglish(double english)
- {
- this.english = english;
- }
- @Override
- public int compareTo(Student stu)
- {
- return (int)((stu.english+stu.math+stu.yuwen)-(this.yuwen+this.math+this.english));
- }
-
- }
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Scanner;
- import java.util.TreeSet;
- /*
- * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),
- * 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
- * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
- *
- * 分析:
- * 将学生存储到集合中,按成绩排序,然后遍历集合,通过IO流写入文件
- * */
- public class Demo4
- {
- public static void main(String[] args) throws IOException
- {
- //定义TreeSet集合存储学生,可以根据学生总成绩对学生进行排序
- TreeSet<Student> ts=new TreeSet<>();
- add(ts);
- method(ts);
- }
- //键盘录入学生信息,并存储到集合中
- public static void add(TreeSet<Student> ts)
- {
- Scanner sc=new Scanner(System.in);
- while(true)
- {
- System.out.println("请输入学生姓名:");
- System.out.println("结束信息录入请输入over");
- String name=sc.next();
- if(name.equals("over"))
- return;
- System.out.println("请输入语文成绩");
- double yuwen=sc.nextDouble();
- System.out.println("请输入数学成绩");
- double math=sc.nextDouble();
- System.out.println("请输入英语成绩");
- double english=sc.nextDouble();
- ts.add(new Student(name,yuwen,math,english));
- }
- }
- //遍历集合,通过字符流缓冲区将学生成绩信息写入到文件中.
- public static void method(TreeSet<Student> ts) throws IOException
- {
- BufferedWriter br=new BufferedWriter(new FileWriter("C:\\Users\\pan\\Desktop\\stu.txt"));
- for(Student s : ts)
- {
- br.write(s.getName()+": 语文"+s.getYuwen()+" 数学"+s.getMath()+" 英语"+s.getEnglish()+" 总分"+(s.getEnglish()+s.getMath()+s.getYuwen()));
- br.newLine();
- br.flush();
- }
- br.close();
- }
- }
复制代码 |
|