JavaStudy44:班级排名
总时间限制:
1000ms
内存限制:
65536kB
描述
信息科学技术学院年终评定讲学金,需要对整个年级的学生按照平均分数进行排名.
要求:根据输入的学号和平均成绩,按照平均成绩降序输出学号
如果平均成绩相同,按照输入的顺序输出。
输入
第一行为N,表示输入N位学生的信息,接着的N行输入学生信息,1<=N<=500
学生信息的格式为:学号 平均成绩
学号的长度小于10,平均成绩在1-100之间.
输出
按照平均成绩降序输出学号,如果平均成绩相同,按照输入顺序输出
样例输入
5 10948001 80 10948004 90 10948101 95 10948102 80 10948209 90
样例输出
10948101 10948004 10948209 10948001 10948102
代码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int n;
n=cin.nextInt();
Student stu[];
Student st;
stu=new Student[n];
for(int i=0;i<n;i++)
{
st=new Student();
st.number=cin.nextInt();
st.garde=cin.nextInt();
stu[i]=st;
}
Arrays.sort(stu);
for(int i=0;i<n;i++)
{
System.out.println(stu[i].number);
}
}
}
class Student implements Comparable<Student>{
int number;
int garde;
public int compareTo(Student i)
{
return i.garde-this.garde;
}
}
思路解析
1.创建学生数组,存放编号和成绩。
2.赋值并用Arrays.sort()进行排序。
知识
1.用新的new类对类数组进行赋值。
2.重新定义排规则,对garde进行排序)。