前提・実現したいこと
お世話になっております。
今回は、出席番号が書かれたファイルと採点結果が書かれたファイルを照合し、出席番号が一致したデータのみを出力しようとしています。出力したデータの合計点と平均点もそれぞれ表示します。
【出席番号データの例】
01
03
04
05
06
07
【採点結果データの例】
01 MATSUMOTO 090 075 100
02 KAWAUCHI 100 055 080
03 KANBA 040 100 050
05 ASANUMA 060 090 070
07 YAMASHITA 070 100 060
10 INAGAKI 010 050 030
【期待する結果の例】
出席番号 名前 英語 数学 国語 合計点 平均点
1 MATSUMOTO 90 75 100 265 88
3 KANBA 40 100 50 190 63
5 ASANUMA 60 90 70 220 73
7 YAMASHITA 70 100 60 230 76
ファイルを読み込んだ後、readを用いて取得した一行分のデータをsplitで分割し、配列に格納してから比較を行おうとしているのですが、出席番号データが改行で区切られているため、一つの配列に格納する方法が分かりません。
そもそも改行されたデータを一つの配列に格納することは可能でしょうか?
イメージは出席番号データを
String[] numData = {01, 03, 04, 05, 06, 07,};
上記のようにできたらと考えています。
どなたかご教授いただければ幸いです。よろしくお願いいたします。
該当のソースコード
Java
1 // ファイルを読み込みモードでオープンする 2 MyFileReader mfr1 = new MyFileReader(numFile); 3 MyFileReader mfr2 = new MyFileReader(saitenFile); 4 5 // 出席番号ファイルを読み込み、出力対象コードを出力 6 String read; 7 String[] numData = {}; 8 9 while((read = mfr1.read()) != null) { 10 numData = read.split("\n"); 11 } //この部分でつまづいています。 12 13 14 // 採点ファイルを1行ずつ読み込み、ファイルに出力する 15 String line; 16 String[] saitenData = {}; 17 18 while((line = mfr2.read()) != null) { 19 saitenData = line.split(" "); 20 21 // 先頭文字が出力対象かチェックするための繰り返し 22 for(int i = 0; i < numData.length; i++) { 23 24 int num = 0; 25 String name = ""; 26 int eigo = 0; 27 int suugaku = 0; 28 int kokugo = 0; 29 30 int sum = 0; 31 int ave = 0; 32 33 // 出席番号データと採点データの出席番号が一致すれば出力する 34 if(saitenData[0].equals (numData[i])) { 35 36 num = Integer.parseInt(saitenData[0]); 37 name = saitenData[1]; 38 eigo = Integer.parseInt(saitenData[2]); 39 suugaku = Integer.parseInt(saitenData[3]); 40 kokugo = Integer.parseInt(saitenData[4]); 41 42 sum = eigo + suugaku + kokugo; 43 ave = sum / 3; 44 45 } 46 47 } 48 49 } 50 51 mfr1.close(); 52 mfr2.close(); 53