ファイルからデータを読み込んで最大値を求める場合は、必ずしも配列をつくってそれに読み込む必要はありません。変数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を表示するプログラムをつくりなさい。