java某班的一次考试所有学生的考试成绩都记录在一个文件in.data之中,文件内容格式如下: 张三的成绩是72分,李四成绩是69分,刘小林的成绩是95分。 现在需要对该文件进行处理,将其内容拷贝到另一个目标文件out.data之中,并统计所有学生成绩平均分(保留2为小数)。 请编码实现该成绩统计系统。
时间: 2024-02-09 19:08:44 浏览: 93
程序用JAVA编写,统计每个学生的总分
好的,你可以参考以下的 Java 代码实现该成绩统计系统:
```java
import java.io.*;
public class ScoreProcessor {
public static void main(String[] args) {
String inputFileName = "in.data";
String outputFileName = "out.data";
File inputFile = new File(inputFileName);
File outputFile = new File(outputFileName);
BufferedReader reader = null;
BufferedWriter writer = null;
try {
// 打开输入文件并读取内容
reader = new BufferedReader(new FileReader(inputFile));
String content = reader.readLine();
// 解析学生成绩并计算平均分
String[] items = content.split(",");
int[] scores = new int[items.length];
for (int i = 0; i < items.length; i++) {
String[] parts = items[i].split("的成绩是");
scores[i] = Integer.parseInt(parts[1].replaceAll("分\\.", ""));
}
double avgScore = Math.round((double)sum(scores) / scores.length * 100) / 100.0;
// 打开输出文件并写入内容
writer = new BufferedWriter(new FileWriter(outputFile));
writer.write(content);
writer.newLine();
writer.write("平均分:" + avgScore + "分");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭输入文件和输出文件
if (reader != null) reader.close();
if (writer != null) writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static int sum(int[] arr) {
int sum = 0;
for (int i : arr) {
sum += i;
}
return sum;
}
}
```
代码说明:
1. 首先定义输入文件名和输出文件名,并创建对应的 `File` 对象。
2. 使用 `BufferedReader` 类读取输入文件内容。
3. 解析每个学生成绩,使用 `split()` 方法和正则表达式提取成绩,将成绩存入 `scores` 数组中。
4. 计算所有学生成绩的平均分,使用 `sum()` 方法计算总分,使用 `Math.round()` 方法和格式化字符串保留两位小数。
5. 使用 `BufferedWriter` 类将输入文件内容和平均分写入输出文件。
6. 关闭输入文件和输出文件,使用 `finally` 语句确保文件在程序异常情况下也能被正确关闭。
阅读全文