题目:
键盘录入3个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到底
分析:
1.创建学生类(姓名,语文成绩,数学成绩,英语成绩,总分)
2.创建TreeSet集合,用于存储对象
3.录入学生信息
4.创建学生对象的比较器
5.把对象添加到treeSet集合中
6.遍历集合
代码如下:
package Demo2;
/**
* 学生类
*/
public class Student{
private String name;
private Integer chinese;
private Integer mathematics;
private Integer english;
private Integer score;
public Student(String name, Integer chinese, Integer mathematics, Integer english, Integer score) {
this.name = name;
this.chinese = chinese;
this.mathematics = mathematics;
this.english = english;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getChinese() {
return chinese;
}
public void setChinese(Integer chinese) {
this.chinese = chinese;
}
public Integer getMathematics() {
return mathematics;
}
public void setMathematics(Integer mathematics) {
this.mathematics = mathematics;
}
public Integer getEnglish() {
return english;
}
public void setEnglish(Integer english) {
this.english = english;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", chinese=" + chinese +
", mathematics=" + mathematics +
", english=" + english +
", score=" + score +
'}';
}
}
package Demo2;
import java.util.Comparator;
/**
* 学生对象比较器
*/
public class StudentCompare implements Comparator<Student> {
// 满足同一对象的条件:姓名、总分、语文成绩、数学成绩、英语成绩都相同
@Override
public int compare(Student s1, Student s2) {
//主要条件:总分
int sum1 = s2.getScore() - s1.getScore();
//次要条件①:总分+语文成绩
int sum2 = sum1==0 ? s2.getChinese()-s1.getChinese() : sum1;
//次要条件②:总分+语文成绩+数学成绩
int sum3 = sum2==0 ? s2.getMathematics()-s1.getMathematics() : sum2;
//次要条件③:总分+语文成绩+数学成绩+英语成绩
int sum4 = sum3==0 ? s2.getEnglish()-s1.getEnglish() : sum3;
//次要条件④:总分+语文成绩+数学成绩+英语成绩+姓名
int sum5 = sum4==0 ? s2.getName().compareTo(s1.getName()) : sum4;
return sum5;
}
}
package Demo2;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
/**
* 测试类
*/
public class Tset {
public static void main(String[] args) {
TreeSet<Student> set = new TreeSet<Student>(new StudentCompare());
Scanner scanner=new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入学生姓名");
String name=scanner.next();
System.out.println("请输入学生语文成绩");
int chinese=scanner.nextInt();
System.out.println("请输入学生数学成绩");
int mathematics=scanner.nextInt();
System.out.println("请输入学生英语成绩");
int english=scanner.nextInt();
int score=chinese+mathematics+english;
set.add(new Student(name,chinese,mathematics,english,score));
}
for (Student s:set
) {
System.out.println(s);
}
}
}