プロが教える店舗&オフィスのセキュリティ対策術

タイトルのようなソートするプログラムを作りたいのですがJava初心者で分からず困っています。
o01921 2 18 21 17 41 15 48 11 7 19
n03295 31 47 2 25 7 3 3 23 61 19
k00886 2 10 31 18 0 11 59 31 20 41
f01295 39 1 45 73 11 10 5 39 0 1
o02369 31 56 6 12 2 47 25 31 19 0
f00455 3 1 60 36 4 20 39 1 24 55
h01795 5 2 35 0 32 49 10 48 41 21
y04159 34 1 37 15 67 2 21 30 29 8
o00021 15 9 47 53 51 22 29 2 0 16
w00501 68 49 64 5 9 21 18 1 11 0

↑テキストファイル

import java.io.*;
import java.util.*;

class Student {
String name;
int[] score = new int[10]; // magic number.

void show() {
System.out.print(name);
for (int i = 0; i < score.length; ++i) {
System.out.printf(" % 4d", score[i]);
}
System.out.println("");
}
}

class Base {
Base() {
}

void set(String line) {
Student student = new Student();
Scanner scanner = new Scanner(line);
student.name = scanner.next();
for (int i = 0; i < 10; ++i) { // magic number.
student.score[i] = scanner.nextInt();
}
student.show();
}

public static void main(String[] args) {
if (args.length > 0) {
Base body = new Base();
try {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
String line;
while ((line = in.readLine()) != null) {
body.set(line);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

↑参照プログラム
上記の参照コードを実行すると単にファイルを読み込んで印字するだけになっています。
これにコードを追加して点数が大きい順に並び替えたいです。
同点の場合は辞書順に並びかえます。

わかる方いましたらご回答よろしくお願いします。

A 回答 (1件)

フィールド Base#students を作る


メソッド Base#add を作り、Base#students へ Student のオブジェクトを追加する
メソッド Base#show を作り、Base#students を sort した結果を表示させる

並び替えの方法を指定できる sort の例
https://docs.oracle.com/javase/jp/8/docs/api/jav …
https://docs.oracle.com/javase/jp/8/docs/api/jav …
    • good
    • 0
この回答へのお礼

なんとなくですが出来ました!
ありがとうございました。仕組みについてはこれから勉強します。

お礼日時:2017/07/29 19:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!