【发布时间】:2014-04-10 19:11:51
【问题描述】:
我的代码将读取名为“QuizScores.txt”的文件中的数字列表。但是,在此文件中,某些数字包含字母。我已经告诉我的程序简单地忽略这些实例并移动到下一个数字。我现在的问题是,如果我的代码一次只读取一行,我需要它来查看整个文件,读入它,计算平均值、最大值和最小值,最后将其输出到一个名为“ QuizStats.txt”。对此的任何帮助将不胜感激!谢谢!
测验分数:
45
63
74g
34.7
75
4
8
15
16
23
42
67f
34
67
代码:
import java.io.*;
public class ScoreReader {
public static void main(String[] args) {
BufferedReader reader = null;
try {
String currentLine;
reader = new BufferedReader(new FileReader("QuizScores.txt"));
while ((currentLine = reader.readLine()) != null) {
int sum = 0;
String[] nums = currentLine.split("\\s+");
for (int i = 0; i < nums.length; i++) {
try{
double num = Integer.parseInt(nums[i]);
if (num != -1) {
sum += num;
}
} catch( NumberFormatException err )
{
}
}
System.out.println(sum);
}
} catch (IOException err) {
err.printStackTrace();
}
catch (NumberFormatException err) {}
finally {
try {
if (reader != null){
reader.close();
}
}
catch (IOException err) {
err.printStackTrace();
}
}
}
}
【问题讨论】:
-
一次读一行有什么问题?
-
你不想
double sum和double num = Double.parseDouble(nums[i]);吗? -
即使文件一次读取一行,我还能计算平均值、最大值和最小值吗?因为我无法让它发挥作用,并认为这是我的问题。
-
你可以。添加一个计数器变量来计算您拥有的值的数量,然后将总和除以该计数器以获得平均值。为最大值和最小值添加另外两个变量 - 当您读取每个值时,将其与当前最大值和最小值进行比较,并根据需要更新最大值和最小值...
-
@ElliottFrisch 是的,你是对的,代码仍在进行中。不过,感谢您抓住这一点。 :)
标签: java arrays bufferedreader