【发布时间】:2016-01-01 21:43:33
【问题描述】:
我正在尝试做一个简单的程序来查找文本文档中一系列数字的平均值,我已经完成了大部分操作,但是在我的 while 语句中写入相同的变量时遇到了问题。我的代码如下所示。
public static void processFile (String filename) throws IOException, FileNotFoundException {
try (BufferedReader inputReader = new BufferedReader (new InputStreamReader(new FileInputStream("scores.txt")))) {
String line;
int lineNum = countLines("scores.txt");
int [] allNums = new int [lineNum];
while (( line = inputReader.readLine()) != null) {
int i = 0;
allNums[i] = Integer.parseInt(line);
average(allNums);
System.out.println(allNums[i]);
}
System.out.println(average(allNums));
}
}
public static double average(int[] avg){
double sum = 0;
for (int i = 0; i < avg.length; i++) {
sum = sum + avg[i];
}
return sum / avg.length;
}
`public static int countLines(String filename) throws IOException {
int cnt;
try (LineNumberReader reader = new LineNumberReader(new
FileReader(filename))) {
cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
}
return cnt;
}`
它不是查找文件中数字的平均值,而是取最后写入数组的数字,然后将其除以文件中的数字数量。我查找了我的问题,但找不到有效的解决方案。另外我知道我的编码变得有点复杂和效率低下,特别是查找行数,但它是一个小文件,我希望它在我提高效率之前工作。
【问题讨论】:
-
您没有在
while循环中增加i。 -
Atri 是对的。将
int i = 0;向上移动到while循环之外,并将i++;放在循环的底部。否则,您只需一遍又一遍地写入数组的第一个元素。