我正在测试一个包含随机生成数字的不同文本文件的程序。Java 程序被构建为将文本文件中的这些数字相加,取这些数字的平均值,然后(使用 IF 语句)从文本文件中找到大于平均值的数字,将所述值放入ArrayList
,并打印平均值和ArrayList
作为输出。但是,由于某种原因,当我使用不同的文本文件运行程序时(我使用了两个文件进行了测试,其中一个有效,一个当前无效)。在 shell 中打印的结果不正确 - 大多数值都大于平均值,但我得到一些不正确的值,并且最多相差三个。
这是我的代码:
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
我终其一生都无法弄清楚为什么这些价值观会消失。我在另一个包含较少输入值的文本文件上测试了这个程序,一切正常。我是 Java 新手,因为这是我在“Hello World”程序之后的第二个程序,而且我对 Java 语法没有广泛的了解。