整数データが1行に1つ計500個書かれているテキストファイルdata_5_1000_500.txtのデータの最大値、最小値、平均値を求めるプログラムCalcFile.javaを書きたいです。ちなみに500個の整数は乱数です。Emacsでプログラムを書き、ターミナルでコンパイルしています。
まず、最大値を求めるプログラムMax.javaを試しに作ってみました。
以下はプログラムです。
import java.util.Scanner;
public class Max{
public static void main(String[]args){
Scanner stdin=new Scanner(System.in);
int max=Integer.MIN_VALUE, x;
while(stdin.hasNext()){
x=stdin.nextInt();
if(x>max)max=x;
}
System.out.printf(”max=%d\n”,max);
}
}
このプログラムはきちんと作動しました。ファイルからデータを受取Maxを求めることができました。
これをもとに最小値を求めるプログラムMin.javaを作りましたが何故か最大値が出力されてしまいます。
以下は私が作成した最小値を求めるプログラムです。
import java.util.Scanner;
public class Min{
public static void main(String[]args){
Scanner stdin=new Scanner(System.in);
int min=Integer.Max_VALUE, y;
while(stdin.hasNext()){
y=stdin.nextInt();
if(y<min)min=y;
}
System.out.printf(”min=%d\n”,min);
}
}
どこが間違っているか教えてほしいです。
また乱数生成プログラムは以下のようになっています。
import java.util.Random;
public class Rand {
public static void main(String[] args) {
Random rand;
//コマンド引数からseed, N, nを決定
int N=100, n=20, seed=0;
switch(args.length) {
case 3: n = Integer.parseInt(args[2]);
case 2: N = Integer.parseInt(args[1]);
case 1: seed = Integer.parseInt(args[0]);
break;
default:
System.err.println("使い方: java Rand seed [Max] [n]");
System.err.println(" default Max=100 n=20 seed=0(no seed)");
System.exit(1);
}
// n個の乱数を生成 if(seed==0) rand = new Random(); else rand = new Random(seed); for(int i=0; i<n; i++) System.out.println(rand.nextInt(N)); }
}
このプログラムは最小値を求める場合でもこのまま使って大丈夫なのでしょうか?
ターミナルには
java Rand 5 1000 500
java Rand 5 1000 500 > data_5_1000_500.txt
cat data_5_1000_500.txt
java Min < data_5_1000_500.txt
と入力しましたが、maxの値しか出力されません。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー