【PAT乙級】1004.成績ランキング(JAVA実現)

15364 ワード

n(>0)名の学生の名前、学番、成績を読み込み、成績が最も高い学生と成績が最も低い学生の名前と学番をそれぞれ出力します.

入力形式:


各テスト入力には、1つのテスト例が含まれています.フォーマットは
1行目:正の整数n 2行目:1人目の学生の名前学号成績3行目:2人目の学生の名前学号成績......n+1行目:n人目の学生の名前学号成績名前と学号はいずれも10文字を超えない文字列で、成績は0から100の間の整数であり、ここでは1組の試験例で2人の学生の成績が同じではないことを保証する.

出力フォーマット:


各試験例に対して2行を出力し,1行目は成績が最も高い学生の名前と学号,2行目は成績が最も低い学生の名前と学号であり,文字列間に1スペースがある.

サンプルを入力:


3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95

出力サンプル:


Mike CS991301 Joe Math990112

問題解決の考え方:


この問題は大きく2つのステップに分けることができる:1、入力された情報を受信して記憶する2、情報をソートして最も高く出力する、最も低い具体的には、ソートする必要があるのは学生の属性であるため、1人の学生のすべての情報を含むデータ構造、すなわちカスタムクラスを構築する必要がある.それからアレックスを通ります.sort()をソートします.最後に、オブジェクト配列の先頭と末尾の要素を出力します.

コードは次のとおりです。


import java.util.Arrays;
import java.util.Scanner;

public class Main
	{

		public static void main(String[] args)
		{
			// 
			Scanner in = new Scanner(System.in);
			int num = in.nextInt();
			in.nextLine();
			String[] array = new String[num];
			for(int i = 0;i<num;i++)
			{
				array[i] = in.nextLine();
			}
			in.close();
			
			Student[] students = toStudent(array);
			Arrays.sort(students);
			// 
			System.out.println(students[num - 1].getInfo());
			System.out.println(students[0].getInfo());
			
		}
		// String Student 
		static Student[] toStudent(String[] array)
		{
			Student[] students = new Student[array.length];
			for(int i = 0;i<array.length;i++)
			{
				String[] tmp = array[i].split(" ");
				students[i] = new Student(tmp[0],tmp[1],Integer.parseInt(tmp[2]));
			}
			return students;
		}
	}
// Student , Comparable 
class Student implements Comparable<Student>
{
		private String name;
		private String id;
		private int score;
		public String getName()
		{
			return name;
		}
		public void setName(String name)
		{
			this.name = name;
		}
		public String getId()
		{
			return id;
		}
		public void setId(String id)
		{
			this.id = id;
		}
		public int getScore()
		{
			return score;
		}
		public void setScore(int score)
		{
			this.score = score;
		}
		@Override
		public String toString()
		{
			return "Student [name=" + name + ", id=" + id + ", score=" + score + "]";
		}
		public Student(String name, String id, int score)
		{
			super();
			this.name = name;
			this.id = id;
			this.score = score;
		}
		public Student()
		{
			super();
		}
		@Override
		public int compareTo(Student o)
		{
			return score - o.score;
		}
		// 
		public String getInfo()
		{
			return name + " " + id; 
		}
		
		
}