键盘录入3个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到底 分析: 1.创建学生类(姓名,语文成绩,数学成绩,英语成绩,总分) 2.创建TreeSet集合,用于存储对象 3.录入学生信息 4.创建学生对象的比较器 5.把对象添加到treeSet集合中 6.遍历集合
时间: 2023-06-12 16:06:10 浏览: 101
以下是 Java 代码实现:
```java
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
class Student {
private String name;
private int chineseScore;
private int mathScore;
private int englishScore;
private int totalScore;
public Student(String name, int chineseScore, int mathScore, int englishScore) {
this.name = name;
this.chineseScore = chineseScore;
this.mathScore = mathScore;
this.englishScore = englishScore;
this.totalScore = chineseScore + mathScore + englishScore;
}
public String getName() {
return name;
}
public int getChineseScore() {
return chineseScore;
}
public int getMathScore() {
return mathScore;
}
public int getEnglishScore() {
return englishScore;
}
public int getTotalScore() {
return totalScore;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", chineseScore=" + chineseScore +
", mathScore=" + mathScore +
", englishScore=" + englishScore +
", totalScore=" + totalScore +
'}';
}
}
class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
if (s1.getTotalScore() != s2.getTotalScore()) {
return s2.getTotalScore() - s1.getTotalScore();
} else if (s1.getChineseScore() != s2.getChineseScore()) {
return s2.getChineseScore() - s1.getChineseScore();
} else if (s1.getMathScore() != s2.getMathScore()) {
return s2.getMathScore() - s1.getMathScore();
} else {
return s1.getName().compareTo(s2.getName());
}
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
TreeSet<Student> treeSet = new TreeSet<>(new StudentComparator());
for (int i = 1; i <= 3; i++) {
System.out.print("请输入第" + i + "个学生的姓名:");
String name = scanner.next();
System.out.print("请输入第" + i + "个学生的语文成绩:");
int chineseScore = scanner.nextInt();
System.out.print("请输入第" + i + "个学生的数学成绩:");
int mathScore = scanner.nextInt();
System.out.print("请输入第" + i + "个学生的英语成绩:");
int englishScore = scanner.nextInt();
Student student = new Student(name, chineseScore, mathScore, englishScore);
treeSet.add(student);
}
System.out.println("按照总分从高到低的顺序输出学生信息:");
for (Student student : treeSet) {
System.out.println(student);
}
}
}
```
运行程序后,可以按照提示输入三个学生的信息,程序会自动计算总分并按照总分从高到低的顺序输出学生信息。输出结果类似于下面的内容:
```
请输入第1个学生的姓名:张三
请输入第1个学生的语文成绩:85
请输入第1个学生的数学成绩:90
请输入第1个学生的英语成绩:80
请输入第2个学生的姓名:李四
请输入第2个学生的语文成绩:90
请输入第2个学生的数学成绩:80
请输入第2个学生的英语成绩:85
请输入第3个学生的姓名:王五
请输入第3个学生的语文成绩:80
请输入第3个学生的数学成绩:85
请输入第3个学生的英语成绩:90
按照总分从高到低的顺序输出学生信息:
Student{name='李四', chineseScore=90, mathScore=80, englishScore=85, totalScore=255}
Student{name='王五', chineseScore=80, mathScore=85, englishScore=90, totalScore=255}
Student{name='张三', chineseScore=85, mathScore=90, englishScore=80, totalScore=255}
```