在java用字符流文件成绩中求出最大值和平均值
时间: 2024-10-12 22:05:04 浏览: 15
在Java中,你可以使用`BufferedReader`和`CharacterInputStreamReader`从字符流文件读取成绩数据,然后使用ArrayList或数组存储这些数值,并计算最大值和平均值。以下是一个简单的步骤示例:
首先,你需要创建一个函数来读取字符流文件并解析成绩:
```java
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
public class ScoreCalculator {
private static final int BUFFER_SIZE = 1024; // 字符缓冲区大小
public static void calculateMaxAndAverage(String filePath) throws IOException {
ArrayList<Integer> scores = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(filePath), StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) { // 遍历每一行
if (!line.isEmpty() && isNumeric(line)) { // 如果非空且包含数字
scores.add(Integer.parseInt(line));
}
}
}
// 计算最大值和平均值
int maxScore = Collections.max(scores);
double averageScore = scores.stream().mapToInt(i -> i).average().orElse(0d); // 使用Optional避免除以零的情况
System.out.println("最大值: " + maxScore);
System.out.println("平均值: " + averageScore);
}
private static boolean isNumeric(String s) {
try {
Integer.parseInt(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
}
```
这个程序假设成绩是以整数形式存在于每行文件中,且文件内容是UTF-8编码的。运行时,你需要传入文件路径作为参数。
阅读全文