SDKD软件18实验-学生排序

时间:2019-10-23
本文章向大家介绍SDKD软件18实验-学生排序,主要包括SDKD软件18实验-学生排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述

编写一个程序,用户可以从键盘录入若干个学生的姓名和分数(程序每次提示用户输入“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);
    }
}

原文地址:https://www.cnblogs.com/YY666/p/11728443.html