PAT 乙級1004. 成績排名 (JAVA版)

讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。

輸入格式:每個測試輸入包含1個測試用例,格式爲

第1行:正整數n
第2行:第1個學生的姓名 學號 成績
第3行:第2個學生的姓名 學號 成績
… … …
第n+1行:第n個學生的姓名 學號 成績
其中姓名和學號均爲不超過10個字符的字符串,成績爲0到100之間的一個整數,這裏保證在一組測試用例中沒有兩個學生的成績是相同的。
輸出格式:對每個測試用例輸出2行,第1行是成績最高學生的姓名和學號,第2行是成績最低學生的姓名和學號,字符串間有1空格。

輸入樣例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
輸出樣例:
Mike CS991301
Joe Math990112

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class A_1004 {
    public static void main(String[] args) {
        Scanner scanInt = new Scanner(System.in);
        int num = Integer.parseInt(scanInt.nextLine());
        List<String> array = new ArrayList<String>();
        while(num > 0){
            String str = scanInt.nextLine();
            array.add(str);
            num--;
        }
//min初始是一個很大的數
        int min = 1000000;
        int min_index = 0;
        int max = 0;
        int max_index = 0;
        StringBuilder maxString=new StringBuilder();  
        StringBuilder minString=new StringBuilder(); 

        for (int i = 0; i < array.size(); i++) {
               String x = array.get(i);  
                String[] temp=x.split(" ");  
            int temScore = Integer.parseInt(temp[2]);
            if (min > temScore ) {
                min = temScore;
                min_index = i;
            }
            if (max < temScore) {
                max = temScore;
                max_index = i;
            }
        }
            String[] maxTemp=array.get(max_index).split(" ");  
            String[] minTemp=array.get(min_index).split(" ");  

            minString.append(minTemp[0]);  
            minString.append(" ");  
            minString.append(minTemp[1]);  

            maxString.append(maxTemp[0]);  
            maxString.append(" ");  
            maxString.append(maxTemp[1]);  

            System.out.println(maxString);  
            System.out.println(minString);  
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章