已知文件score.txt内容如下: 语文85分,数学89分,英语75分,马列95分。 要求解析出其中的成绩数据,并计算总成绩
java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ScoreCalculator {
public static void main(String[] args) {
String filename = "score.txt";
String line;
int totalScore = 0;
// Regular expression to match scores
Pattern pattern = Pattern.compile("(\\d+)分");
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
while ((line = br.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
// Extract the score and add it to the total score
totalScore += Integer.parseInt(matcher.group(1));
}
}
System.out.println("总成绩: " + totalScore + "分");
} catch (IOException e) {
e.printStackTrace();
}
}
}
-
导入必要的包:
java.io.BufferedReader
和java.io.FileReader
用于读取文件。java.util.regex.Pattern
和java.util.regex.Matcher
用于匹配正则表达式。
-
定义主类和主方法:
public class ScoreCalculator
是主类。public static void main(String[] args)
是主方法。
-
文件名和初始化总成绩:
String filename = "score.txt";
定义文件名。int totalScore = 0;
初始化总成绩为0。
-
正则表达式模式:
Pattern pattern = Pattern.compile("(\\d+)分");
定义一个正则表达式模式,匹配以"分"结尾的数字。
-
读取文件并解析成绩:
- 使用
BufferedReader
和FileReader
读取文件内容。 - 用
while
循环逐行读取文件内容。 - 在每行中使用
Matcher
查找匹配的成绩。 - 将找到的成绩转换为整数并累加到
totalScore
。
- 使用
-
输出总成绩:
System.out.println("总成绩: " + totalScore + "分");
输出总成绩。
-
异常处理:
- 使用
try-with-resources
语句来确保文件被正确关闭。 - 捕获并打印可能的
IOException
。
- 使用
运行结果