Java.成绩排序---(查找和排序)

链接:https://www.nowcoder.com/questionTerminal/0383714a1bb749499050d2e0610418b1
来源:牛客网
 

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

示例:
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩
peter     96
jack      70
Tom       70
smith     67

从低到高

smith     67

jack      70
Tom      70
peter     96

 

输入描述:

 

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。
 

输出描述:

 

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入

3
0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

【解题思路】
定义类,表示姓名和成绩 。

实现方法中:先输入人数,再输入排序策略(0或者1),输入多组人名和成绩。

按照排序策略进行排序输出。
 

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class practice29 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int numPeople = scanner.nextInt();
            int option = scanner.nextInt();
            List stuList = new ArrayList<>();
            for (int i = 0; i < numPeople; i++) {
                stuList.add(new Student(scanner.next(), scanner.nextInt()));
            }
            if (option == 0) {
                stuList.sort((o1, o2) -> o2.score - o1.score);
            }
            else if (option == 1) {
                stuList.sort((o1, o2) -> o1.score - o2.score);
            }
            for (Student student : stuList) {
                System.out.println(student.name + " " + student.score);
            }
        }
    }
}
class Student {
    public String name;
    public int score;
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

你可能感兴趣的:(java)