javaらしいやりかたで

複数のフィールドからなるデータをクラスで

データは前回と同じ、受験番号と点数の組み合わせであったとします。

ファイル名 data22.txt

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

課題

1.

プログラム名 OokiiJun41.java

上記のプログラムを完成させなさい

もくじ

Javaプログラミング
聖愛中学高等学校
http://www.seiai.ed.jp/
Dec.2003
Feb.2009
Dec.2011