题目描述
编写一个程序,用户可以从键盘录入若干个学生的姓名和分数(程序每次提示用户输入“Y”或“N”决定是否继续录入学生信息,如果用户输入“N”则用户输入完毕。输入的“Y”、“N”不区分大小写)。用户录入完毕后,程序按成绩由高到低的顺序输出学生的姓名和分数(姓名和分数之间用一个空格分割)。【说明:键盘输入可以使用Scanner类】
题意分析
根据题目信息我们要描述学生根据成绩排序,故我们编写一个Student类使其具有两个属性 name,score 。然后根据排序的要求我们可以使用TreeSet这种数据结构
代码
Main.java
import java.util.Objects;
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
static final Scanner cin = new Scanner(System.in);
public static void main(String[] args) {
// write your code here
var set = new TreeSet<Student>();
while(true) {
System.out.print("是否添加一个学生?(y/n)");
String option = cin.next();
if(Objects.equals(option, "Y") || Objects.equals(option, "y")) {
set.add(new Student(cin.next(),cin.nextDouble()));
}else if(Objects.equals(option, "N") || Objects.equals(option, "n"))
break;
else
System.out.print("输入错误,");
}
for(Student tmp : set)
System.out.println(tmp);
}
}
Student.java
public class Student implements Comparable<Student>{
private String name;
private double score;
public Student(String name, double score) {
this.name = name;
this.score = score;
}
@Override
public String toString() {
return name + " " + score;
}
@Override
public int compareTo(Student other) {
return -Double.compare(score, other.score);
}
}