比賽_ny_871(排序).java

Main-zy發表於2013-11-23

比賽

時間限制:1000 ms  |  記憶體限制:65535 KB
難度:1
描述
                   今天Acm舉行了一場比賽,邀請大一的學生參加比賽,實際來了m個學生,當他們做好自己的位置的時候,一個Acm的成員小z按照順序登記他們的資訊(學號,姓名),當他們比賽完之後按照小z登記的資訊填寫他們的成績;現在問題來了,acm的小z只記錄大一同學的成績,不知道排名,但小z想知道他們的排名,他很苦惱,聰明的你幫他寫個程式解決一下吧。
輸入
第一行是一個整數T表示測試資料的組數
每組測試資料的第一行 有一個整數m(m<=100)表示大一比賽的人數,之後m行,每行包含三個資料表示一個學生的資訊,分別表示學生的學號,姓名,比賽成績。
輸出
輸出每組學生排過序的名單(成績相同誰在前面先輸出誰)
樣例輸入
1
3
12066 zhangming 23
11077 wangming 45
13088 zhaoqian  15
樣例輸出
11077 wangming 45
12066 zhangming 23
13088 zhaoqian  15


注意:每一組資料的資料間相隔不一定只有一個空格哦

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;

public class Main {
	public static void main(String[] args) {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		
		try {
			Integer n=Integer.parseInt(bf.readLine());
			while(n-->0){
				int m=Integer.parseInt(bf.readLine());
				FUN f[]=new FUN[m];
				for(int i=0;i<m;i++){
					String a=bf.readLine();
					String a1[]=a.split(" ");
					f[i]=new FUN(a,Float.parseFloat(a1[a1.length-1]));
				}
				Arrays.sort(f,new Comparator<FUN>() {

					@Override
					public int compare(FUN o1, FUN o2) {
						if(o1.grade>=o2.grade)
							return 0;
						return 1;
					}
				});
				for(int i=0;i<m;i++){
					System.out.println(f[i].s);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} 

	}
}
class FUN{
	String s;
	float grade;
	public FUN(String s, float grade) {
		this.s = s;
		this.grade = grade;
	}
}



相關文章