次の情報を含むテキスト ファイルをスキャンする Java プログラムがあります。
上級武術卒業証書
(バーバンクス忍者学校)
アドキンス、スコット 72
ブラック、ジャック 44
キャラダイン、デビッド 81
チャン、ジャッキー 75
チョウ、スティーブン 77
チョウ、ユンファット 79
ジャー、トニー 71
リー、ブルース 76
リー、ジェット 76
ノリス、チャック71
オーデカーク、スティーブ 58
リーブス、キアヌ 62
ウワイス、イコ 75
イェン、ドニー 80
ヨー、ミシェル 79
チャン、ツィイー 75
パイロット (宇宙艦隊アカデミー)
アーチャー、ジョナサン 71
ジェインウェイ、キャスリン 74
カーク、ジェームズ T. 79
ピカード、ジャン リュック 85
パイク、クリストファー 80
ライカー、ウィリアム 79
アドバンスド アクション ヒーローズ (ディズニー U)
アラジン 91
ベネディクト、ジュリアス 45
ブリューワー、ゴーディ 82
コナン 60
ダック、ドナルド 40
アイインクレディブル、ミスター 85
マトリックス、ジョン 64
マウス、ミッキー 51
オーウェンズ、レイ 82
ポピンズ、メアリー 85
クエイド、ダグラス 75
リチャーズ、ベン 68
シンバ 80
スレーター、ジャック 80
ターミネーター、ザ 90
タリー、ルイ DNFの
服装、ポイズ & グレース
ビーバー、ジャスティン 33
ブロック、サンドラ 80
チッコーネ、マドンナ 60
サイラス、マイリー 40
ガガ、レディ 50
ローパー、シンディ 55
ミナージュ、ニッキー 45
サーキシアン、シェール 75
以上です、皆さん!
テキストファイルをスキャンしてフォーマットされた値を返すこれまでのコードは次のとおりです。
public static void main(String[] args) throws Exception {
Scanner fileScanner = new Scanner(new File("lists.txt"));
String line = fileScanner.nextLine().trim();
String programName;
String schoolName;
String topStudent;
int topGrade;
while (!line.equals("That's All, Folks!")) {
//extract a program's information
System.out.println("");
System.out.println(line.trim());
line = fileScanner.nextLine().trim();
line = line.replaceAll("\\s+", " ");
System.out.println("");
while (!line.isEmpty()) {
//deal with one student
System.out.println(line);
line = fileScanner.nextLine().trim();
line = line.replaceAll("\\s+", " ");
}
//displays summary information for a program
line = fileScanner.nextLine().trim();
}
}
これらの文字列をチェックすることになっています (名前が 1 つあるものもあれば、名前が 2 つあるものもあります。1 つには成績ではなく DNF があります)。以下のようにするには、各プログラムの各人の名前と最高成績のみを返すにはどうすればよいですか。
高度な武術の卒業証書
(バーバンクス忍者学校)
デイビッド・キャラダイン
パイロット
(宇宙艦隊アカデミー)
ジャン=リュック・ピカード
アドバンスド アクション ヒーローズ
ディズニー U)
アラジン
服装、落ち着き、優美さ
サンドラ・ブロック
編集:変数を追加