这个需求看起来就是个排序问题,对于Java来说是很简单的。本身我想着用Map来保存原数据,但是感觉不是很好使,考虑到给出的原数据是成绩,索性就定义一个类。
之后就是重写List的Compare方法了:
package huawei; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int a = in.nextInt(); int b = in.nextInt(); // 0 or 1 List<Student> list = new ArrayList<>(); for (int i = 0; i < a; i++) { Student student = new Student(in.next(), in.nextInt()); list.add(student); } if (b == 1) { list.sort(Comparator.comparingInt(Student::getGrade)); } if (b == 0) { list.sort((o1, o2) -> o2.getGrade() - o1.getGrade()); } list.forEach(System.out::println); } } } class Student { private String name; private int grade; public Student(String name, int grade) { this.name = name; this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } @Override public String toString() { return this.name + " " + this.grade; } }