データは前回と同じ、受験番号と点数の組み合わせであったとします。
n1001 65 67 56 70 42 300 n1002 35 39 38 32 34 178 n1003 55 80 40 72 59 306 n1004 52 86 61 75 61 335 n1005 63 72 65 53 59 312 n1006 44 50 52 50 47 243 n1007 45 57 59 45 35 241 ....
次のようなクラスを作り、それぞれのフィールドに一人のデータを入れることにします。
public class OokiiJun41 { String jnum ; int ten1 ; int ten2 ; int ten3 ; int ten4 ; int ten5 ; int soukei ; .....
1行を分けてデータを各フィールドにいれるのはコンストラクタを使うことにします。
public OokiiJun41( String line, String sep) { String[] tmp = line.split(sep); jnum = tmp[0]; ten1 = Integer.parseInt(tmp[1]); ten2 = Integer.parseInt(tmp[2]); ten3 = Integer.parseInt(tmp[3]); ten4 = Integer.parseInt(tmp[4]); ten5 = Integer.parseInt(tmp[5]); soukei = Integer.parseInt(tmp[6]); }
印刷の仕方を定義しておきます。
public String toString(){ String tmp; tmp = jnum+" "+ten1+" "+ten2+" "+ten3 ; tmp = tmp +" "+ten4+" "+ten5+" "+soukei; return tmp; }
メインのメソッドではOokiiJun41の配列をつくって、ファイルから読み込み、new OokiiJun41(line,sep)で一人分のデータをつくって代入しています。
public static void main( String[] args ) { int ct=0; String sep = "\t"; String fname = "data22.txt"; OokiiJun41[] jtable = new OokiiJun41[1200]; try { FileReader in = new FileReader(fname); BufferedReader inb = new BufferedReader(in); String line; while ((line = inb.readLine()) != null) { jtable[ct] = new OokiiJun41(line,sep); ct++; } inb.close(); in.close(); } //もちろんcatchも必要
ソートは後回しで、ちゃんと読めたか確認します。
for (int i = 0; i < 10 ; i++) { System.out.println(jtable[i]); } System.out.println(); for (int i = ct-10; i < ct ; i++) { System.out.println(jtable[i]); }
最初の10件と最後の10件を表示する。(全部は見るのが苦しい)
$ java OokiiJun41 n1001 65 67 56 70 42 300 n1002 35 39 38 32 34 178 n1003 55 80 40 72 59 306 n1004 52 86 61 75 61 335 n1005 63 72 65 53 59 312 n1006 44 50 52 50 47 243 n1007 45 57 59 45 35 241 n1008 49 26 53 36 42 206 n1009 57 78 80 90 83 388 n1010 38 79 65 93 76 351 n2092 49 49 66 60 68 292 n2093 30 26 52 35 37 180 n2094 41 29 57 58 58 243 n2095 37 68 72 79 61 317 n2096 36 26 58 55 43 218 n2097 50 56 92 54 58 310 n2098 45 32 31 35 14 157 n2099 44 38 48 65 49 244 n2100 34 16 64 56 60 230 n2101 62 40 56 54 56 268
上記のプログラムを完成させなさい