键盘录入5个学生信息并且存储到集合中(姓名,年龄,语文成绩,数学成绩,英语成绩),
按照总分从高到低输出到控制台
注:总分相同等情况下按照语文成绩排序,其次是数学成绩、英语成绩、年龄、姓名
1.先在main方法外定义一个学生类
class Student{
private String name;
private int age;
private int chinese;
private int math;
private int english;
public Student() {
}
public Student(String name, int age, int chinese, int math, int english) {
this.name = name;
this.age = age;
this.chinese = chinese;
this.math = math;
this.english = english;
}
//返回总成绩
public int getSum(){
return chinese + math + english;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getChinese() {
return chinese;
}
public void setChinese(int chinese) {
this.chinese = chinese;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
@Override
public String toString() {
return "姓名:" + name +
", 年龄:" + age +
", 语文成绩:" + chinese +
", 数学成绩:" + math +
", 英语成绩:" + english;
}
}
2.在主方法main中编写实现代码
public class Demo03 {
public static void main(String[] args) {
TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num1 = s2.getSum() - s1.getSum();
int num2 = (num1 == 0) ? s2.getChinese() - s1.getChinese() : num1;
int num3 = (num2 == 0) ? s2.getMath() - s1.getMath() : num2;
int num4 = (num3 == 0) ? s2.getEnglish() - s1.getEnglish() : num3;
int num5 = (num4 == 0) ? s2.getAge() - s1.getAge() : num4;
int num6 = (num5 == 0) ? s2.getName().compareTo(s1.getName()) : num5;
return (num6 < 0) ? -1 : ((num6 == 0) ? 0 : 1);
}
});
for (int i = 1; i <= 5; i++) {
Scanner input = new Scanner(System.in);
System.out.println("请输入第" + i + "个学生的信息:");
System.out.print("姓名:");
String n = input.next();
System.out.print("年龄:");
int a = input.nextInt();
System.out.print("语文成绩:");
int c = input.nextInt();
System.out.print("数学成绩:");
int m = input.nextInt();
System.out.print("英语成绩:");
int e = input.nextInt();
Student s = new Student();
s.setName(n);
s.setAge(a);
s.setChinese(c);
s.setMath(m);
s.setEnglish(e);
ts.add(s);
}
for (Student t : ts) {
System.out.println(t);
}
}
}
3.运行结果
请输入第1个学生的信息:
姓名:小明
年龄:20
语文成绩:80
数学成绩:80
英语成绩:80
请输入第2个学生的信息:
姓名:小红
年龄:20
语文成绩:90
数学成绩:100
英语成绩:50
请输入第3个学生的信息:
姓名:小黄
年龄:22
语文成绩:95
数学成绩:70
英语成绩:70
请输入第4个学生的信息:
姓名:小强
年龄:19
语文成绩:90
数学成绩:80
英语成绩:100
请输入第5个学生的信息:
姓名:小天
年龄:20
语文成绩:95
数学成绩:95
英语成绩:85
姓名:小天, 年龄:20, 语文成绩:95, 数学成绩:95, 英语成绩:85
姓名:小强, 年龄:19, 语文成绩:90, 数学成绩:80, 英语成绩:100
姓名:小红, 年龄:20, 语文成绩:90, 数学成绩:100, 英语成绩:50//这里可以看到小红和小明总成绩一样 比较的语文成绩
姓名:小明, 年龄:20, 语文成绩:80, 数学成绩:80, 英语成绩:80
姓名:小黄, 年龄:22, 语文成绩:95, 数学成绩:70, 英语成绩:70
Process finished with exit code 0
4.总结
这道题是一道简单的TreeSet排序题 ,可以帮助掌握一些基本的使用原则
该博客介绍了如何使用Java通过键盘录入5个学生的信息(姓名、年龄、语文、数学、英语成绩),将数据存储到集合中,并按照总分从高到低排序。当总分相同时,依据语文、数学、英语成绩和年龄进行排序。这是一个关于Java TreeSet排序的应用实例。
2453

被折叠的 条评论
为什么被折叠?



