题解 | #成绩排序#用一个类包装一下,再使用比较器解决
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
import java.util.Scanner;
import java.util.Comparator;
import java.util.ArrayList;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int num = Integer.valueOf(in.nextLine());
int way = Integer.valueOf(in.nextLine());
ArrayList<student> ss = new ArrayList<>();
student[] sss = new student[num];
for(int i=0;i<num;i++){
String str1 = in.nextLine();
String[] str2 = str1.split(" ");
String name = str2[0];
Integer n = Integer.valueOf(str2[1]);
student a = new student(n,name,i);
sss[i]=a;
}
if(way==0){
Arrays.sort(sss,new Mycomp2());
for(int i=0;i<sss.length;i++){
System.out.println(sss[i].name+" "+sss[i].score);
}
}else{
Arrays.sort(sss,new Mycomp());
for(int i=0;i<sss.length;i++){
System.out.println(sss[i].name+" "+ sss[i].score);
}
}
}
public static class student{
public int score;
public String name;
public int number;
public student(int s,String n,int num){
score = s;
name = n;
number = num;
}
}
public static class Mycomp implements Comparator<student>{
@Override
public int compare(student s1,student s2){
return s1.score-s2.score == 0?s1.number-s2.number:s1.score-s2.score;
}
}
public static class Mycomp2 implements Comparator<student>{
@Override
public int compare(student s1,student s2){
return s2.score-s1.score == 0?s1.number-s2.number:s2.score-s1.score;
}
}
}
查看11道真题和解析
