版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mushao999/article/details/45462059
成绩排序
描述:
查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩
peter 96
jack 70
Tom 70
smith 67
从低到高
smith 67
jack 70
Tom 70
peter 96
知识点: 排序
题目来源: 内部整理
练习阶段: 中级
运行时间限制: 10Sec
内存限制: 128MByte
输入:
输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开
用户名字,字符串,非空串,长度不超过20;
成绩,整数,范围【0,100】
输入排序方式,0或1,0表示成绩从高到低方式输出名字和成绩,1表示成绩从低到高方式输出名字和成绩
输出:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
样例输入:
3
0
fang 90
yang 50
ning 70
样例输出:
fang 90
ning 70
yang 50
描述:
查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩
peter 96
jack 70
Tom 70
smith 67
从低到高
smith 67
jack 70
Tom 70
peter 96
知识点: 排序
题目来源: 内部整理
练习阶段: 中级
运行时间限制: 10Sec
内存限制: 128MByte
输入:
输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开
用户名字,字符串,非空串,长度不超过20;
成绩,整数,范围【0,100】
输入排序方式,0或1,0表示成绩从高到低方式输出名字和成绩,1表示成绩从低到高方式输出名字和成绩
输出:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
样例输入:
3
0
fang 90
yang 50
ning 70
样例输出:
fang 90
ning 70
yang 50
答案提示:
原来自己写的是
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=Integer.parseInt(sc.nextLine());
String type=sc.nextLine();
Score[] scores=new Score[num];
for(int i=0;i<num;i++)
{
String[] tmp=sc.nextLine().split(" ");
scores[i]=new Score(tmp[0],Integer.parseInt(tmp[1]));
}
Arrays.sort(scores,new Comparator<Score>() {
@Override
public int compare(Score s1,Score s2)
{
if(s1.score!=s2.score)
{
if(type.equals("0"))
{
return -((Integer)s1.score).compareTo(s2.score);
}
else {
return ((Integer)s1.score).compareTo(s2.score);
}
}
else {
return ((Integer)s1.sid).compareTo(s2.sid);
}
}
});
for(Score s:scores)
{
System.out.println(s);
}
sc.close();
}
}
class Score
{
public static int id=0;
int sid;
String name;
int score;
public Score(String name,int score)
{
this.sid=id++;
this.name=name;
this.score=score;
}
@Override
public String toString()
{
return name+" "+score;
}
}
竟然编译错误,说是内部类中不能访问非final变量,所以把type的定义改为final Sring type=sc.nextLine();
问题解决。