ランダムに生成された数値を含むさまざまなテキスト ファイルでプログラムをテストしています。Java プログラムは、テキスト ファイルからこれらの数値を加算し、それらの数値の平均を取り、(IF ステートメントを使用して) 平均より大きい数値をテキスト ファイルから見つけ、その値を , に入れるように構築されていますArrayList
。平均値とArrayList
出力として出力します。ただし、何らかの理由で、別のテキスト ファイルを使用してプログラムを実行すると (2 つを使用してテストしました。1 つは機能し、もう 1 つは現在機能していません)。シェルに出力された結果は正しくありません。値の大部分は平均よりも大きくなっていますが、そうでない値もいくつか得られ、最大で 3 の差があります。
これが私のコードです:
package homework.pkg23.average;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
public class Homework23Average {
public static void main(String[] args) {
ArrayList exes = new ArrayList ();
double x = 0;
double y = 0;
Scanner inputStream = null;
try {
inputStream = new Scanner (new File ("MyInput.txt"));
}
catch (FileNotFoundException e) {
System.out.println ("File not found, program aborted:");
System.exit (1);
}
int count = 0;
while (inputStream.hasNextDouble ()) {
count ++;
x = inputStream.nextDouble ();
y += x;
if (x > y/count) // x values greater than the mean
exes.add (x);
}
System.out.println ("The value(s) greater than the mean, "
+ y/count + ", are (is):");
exes.forEach (System.out::println);
inputStream.close ();
}
}
これをファイルから実行すると、平均 79.67 になりますが、出力は次のようになります。
The value(s) greater than the mean, 79.67, are (is):
128.0
93.0
143.0
111.0
95.0
116.0
136.0
129.0
141.0
78.0 <-- NOTICE: value is less than the average
93.0
105.0
90.0
90.0
144.0
116.0
136.0
138.0
75.0 <-- NOTICE: value is less than the average
80.0
126.0
75.0 <-- NOTICE: value is less than the average
80.0
98.0
114.0
116.0
86.0
78.0 <-- NOTICE: value is less than the average
123.0
145.0
103.0
111.0
91.0
134.0
119.0
91.0
121.0
113.0
129.0
91.0
116.0
85.0
85.0
126.0
145.0
98.0
115.0
83.0
127.0
119.0
97.0
125.0
121.0
123.0
86.0
108.0
100.0
134.0
なぜこれらの価値観がすり抜けているのか、一生理解できません。入力値の少ない別のテキスト ファイルでこのプログラムをテストしたところ、すべて正常に動作しました。これは「Hello World」プログラムに続く 2 番目のプログラムであり、Java 構文に関する広範な知識はありません。