使用java分析成绩单。现有如下格式的成绩单(文本格式)score.txt: 姓名:张三,数学72分,物理67分,英语70分。 姓名:李四,数学92分,物理98分,英语88分。 姓名:周五,数学68分,物理80分,英语77分。 要求按行读入成绩单,并在该行的后面结尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。
时间: 2024-03-20 07:44:53 浏览: 82
java 一张考试成绩单
可以使用Java的文件操作和字符串处理来实现对成绩单的分析。
以下是一个简单的实现方式:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ScoreAnalyzer {
public static void main(String[] args) {
String inputFile = "score.txt";
String outputFile = "scoreAnalysis.txt";
try {
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(","); // 以中文逗号分隔每个字段
String name = parts[0].substring(3); // 姓名字段以“姓名:”开头,需要去掉
int mathScore = Integer.parseInt(parts[1].substring(3, parts[1].length() - 1)); // 数学成绩字段以“数学”和“分”开头结尾,需要去掉
int physicsScore = Integer.parseInt(parts[2].substring(3, parts[2].length() - 1)); // 物理成绩字段以“物理”和“分”开头结尾,需要去掉
int englishScore = Integer.parseInt(parts[3].substring(3, parts[3].length() - 1)); // 英语成绩字段以“英语”和“分”开头结尾,需要去掉
int totalScore = mathScore + physicsScore + englishScore; // 计算总成绩
line = line + ",总成绩:" + totalScore + "分"; // 在该行的后面结尾加上该同学的总成绩
writer.write(line + "\n"); // 将该行写入到输出文件中
}
reader.close();
writer.close();
System.out.println("成绩分析已完成,结果已保存到 " + outputFile);
} catch (IOException e) {
System.out.println("出现错误:" + e.getMessage());
}
}
}
```
这个程序首先定义了输入文件和输出文件的文件名,然后使用`BufferedReader`和`BufferedWriter`来分别读取输入文件和写入输出文件。在每次循环中,程序先使用`split`方法将每行成绩单按照中文逗号分隔成姓名、数学成绩、物理成绩和英语成绩四个字段,然后使用`substring`方法去掉每个字段的开头和结尾不需要的部分,转换成整数类型后计算总成绩,并将该行的总成绩加到该行的末尾上。最后将该行写入到输出文件中。
使用该程序,可以将输入文件中的成绩单分析并输出到输出文件中。
需要注意的是,该程序在处理输入文件时假设每行成绩单的格式都是正确的,如果输入文件中有格式错误的行,程序可能会出现错误。
阅读全文