ファイルから読み込む場合

最大値

ファイルからデータを読み込んで最大値を求める場合は、必ずしも配列をつくってそれに読み込む必要はありません。変数maxよりも小さい値はそのまま読み捨てればいいからです。

データを読み終わった時には最大値が求まっています。速度的にも有利です。

プログラム名 Saidai11.java

import java.io.*;

public class Saidai11 {
    public static void main( String[] args ) {
        int ct  = 0;
        int max = 0;
        String fname = "data11.txt";
        try {
            FileReader   in  = new FileReader(fname);
            BufferedReader inb = new BufferedReader(in);
            String line;
            while ((line = inb.readLine()) != null) {
                ct++;
                if( Integer.parseInt(line) > max ){
                    max = Integer.parseInt(line);
                }
            }
            inb.close();
            in.close();
        }
        catch (IOException e) {
            System.err.println( fname + " がないのでは?" );
            System.err.println( e);
        }
        System.out.println( "データ数" + ct );
        System.out.println( "最大値:" + max );
    }

}

データは次のようになっています。

300
178
306
335
312
243
.....

data11.txtダウンロード(右クリックで保存する)

動作結果

$ java Saidai11
データ数1101
最大値:437

maxの初期値は 0 にしています。データが全部マイナスの値だったらこれは使えません。想定される最大値よりも小さな値をいれればいいのですが、予想がつかない時は、max=Integer.MIN_VALUE とします。intで扱える最小値が入ります。(-231です)

課題

1.

おなじデータから最小値を求めて表示するプログラムにしなさい。

プログラム名 Saishou11.java

2.

おなじデータから最大値と2番目に大きな値を表示するプログラムをつくりなさい。

プログラム名 Saidai12.java

3.

おなじデータからトップ10を表示するプログラムをつくりなさい。

プログラム名 Saidai13.java

もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified