需求:键盘录入3个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台。
* 步骤: * a: 自定义一个学生类 * b: 创建一个TreeSet集合对象(使用比较器进行排序) * c: 键盘录入学生的数据,然后把学生的数据封装成一个学生对象,把学生对象添加到集合中 * d: 遍历集合
定义测试类
package org.westos.demo93;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class MyTest {
public static void main(String[] args) {
TreeSet treeSet = new TreeSet<>(new Comparator() {
@Override
public int compare(Student s1, Student s2) {
//按照总分排序
int num = s1.getTotalScore() - s2.getTotalScore();
//如果总分一样,再比较一下姓名
int num2=num==0?s1.getName().compareTo(s2.getName()):num;
return -num2;
}
});
for (int i = 1; i <= 3; i++) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第"+i+"个学生的姓名");
String name = scanner.nextLine();
Student student = new Student();
student.setName(name);
System.out.println("请输入第"+i+"个学生的语文成绩");
int yw = scanner.nextInt();
student.setChineseScore(yw);
System.out.println("请输入第" + i + "个学生的数学成绩");
int sx = scanner.nextInt();
student.setMathScore(sx);
System.out.println("请输入第" + i + "个学生的英语成绩");
int yy = scanner.nextInt();
student.setEnglishScore(yy);
//把学生对象,放到集合中
treeSet.add(student);
}
//遍历集合,输出一个漂亮的内容
System.out.println("序号t姓名t语文t数学t英语t总分");
int i=1;
for (Student student : treeSet) {
System.out.println((i++)+"t"+student.getName()+"t"+student.getChineseScore()+"t"+student.getMathScore()+"t"+student.getEnglishScore()+"t"+student.getTotalScore());
}
}
}
定义学生类
package org.westos.demo93;
public class Student {
private String name;
private int chineseScore;
private int mathScore;
private int englishScore;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getChineseScore() {
return chineseScore;
}
public void setChineseScore(int chineseScore) {
this.chineseScore = chineseScore;
}
public int getMathScore() {
return mathScore;
}
public void setMathScore(int mathScore) {
this.mathScore = mathScore;
}
public int getEnglishScore() {
return englishScore;
}
public void setEnglishScore(int englishScore) {
this.englishScore = englishScore;
}
//获取总分的方法
public int getTotalScore() {
return chineseScore+mathScore+englishScore;
}
}



