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位学生的年龄和3门成绩 进行从高到低排序并将内容保留到本地文本文件中
* PS:学生类在此省略
* */
public class StudentTest {
public static void main(String[] args) throws IOException {
/**
* 第一步:定义一个用来存储学生对象的TreeMap容器 并使用匿名内部接口实现comparator
*
* */
TreeSet<Student>tm=new TreeSet<Student>(new Comparator<Student>() {
public int compare(Student s1, Student s2) {
int sum=s2.getSum()-s1.getSum();
int chinese=(sum==0)?s2.getChinese()-s1.getChinese():sum;
int math=(chinese==0)?s2.getMath()-s1.getMath():chinese;
int name=(math==0)?s2.getName().compareTo(s1.getName()):math;
return name;
}
});
/**
* 第二步:循环录入5名学生的姓名和成绩
*
* */
for(int i=0;i<5;i++){
Scanner in=new Scanner(System.in);
System.out.println("请输入第"+(i+1)+"学生名字");
String name=in.nextLine();
System.out.println("请输入语文成绩:");
int chinese=in.nextInt();
System.out.println("请输入数学成绩:");
int math=in.nextInt();
System.out.println("请输入英文成绩:");
int english=in.nextInt();
Student s=new Student(name,chinese,math,english);//设置每位学生的名字和成绩 本人比较懒 这里直接使用构造方法赋值(一般使用set设置属性)
tm.add(s);//然后添加到集合中
}
/**
* 第三步:创建字符缓冲区对象 将集合对象写出到本地文本中
* */
BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\StudentDate.txt"));
for(Student i:tm){
bw.write(i.toString());
bw.newLine();
bw.flush();
}
bw.close();
}
} |
|