题目1061:成绩排序
参考代码:
import java.io.IOException;
import java.util.*;
public class Main {
private static class Student implements Comparable<Student> {
String id;
int age;
int mark;
public Student(String id, int age,int mark) {
this.id = id;
this.mark = mark;
this.age = age;
}
public String toString() {
return (this.id + " " +this.age + " " + this.mark);
}
@Override
public int compareTo(Student s1) { //返回S1-THIS是按从大到小排列,反之从小到大
if (s1.mark != this.mark)
return ( - s1.mark + this.mark); //按成绩从低到高排序
else if(!s1.id.equals(this.id))
return (this.id.compareTo(s1.id)); //相当于 this-s1
else
return (-s1.age + this.age);
}
}
public static void main(String arg[]) throws IOException{
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){ //这句话很重要,不然会出错
Integer n = sc.nextInt();
List<Student> students = new ArrayList<Student>();
String unuse = sc.nextLine();
for(int i=0;i<n;i++){
//String s = sc.nextLine();
//String[] tempNum = s.split(" ");
//Integer age=Integer.parseInt(tempNum[1]);
//Integer score=Integer.parseInt(tempNum[2]);
students.add(new Student(sc.next(),sc.nextInt(),sc.nextInt()));
}
Collections.sort(students);
for(Student i :students){
System.out.println(i.toString());
}
students.clear();
}
}
}