ファイルからデータを読み込んで最大値を求める場合は、必ずしも配列をつくってそれに読み込む必要はありません。変数maxよりも小さい値はそのまま読み捨てればいいからです。
データを読み終わった時には最大値が求まっています。速度的にも有利です。
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です)
おなじデータから最小値を求めて表示するプログラムにしなさい。
おなじデータから最大値と2番目に大きな値を表示するプログラムをつくりなさい。
おなじデータからトップ10を表示するプログラムをつくりなさい。