处理文本文件中的成绩分数。(教材12.14) 假定一个名为score.txt的文本文件中包含一门课程的若干个成绩分数,分数之间用空格或换行分开。 编写一个程序,从文件中读取分数,计算这些分数的个数以及平均值。java生成
时间: 2024-10-07 10:06:22 浏览: 34
在Java中处理文本文件中的成绩分数,可以按照以下步骤编写程序:
1. **打开并读取文件**:
使用`BufferedReader`类打开文件,并逐行读取内容。可以使用`try-with-resources`语句自动关闭资源。
```java
BufferedReader reader = new BufferedReader(new FileReader("score.txt"));
String line;
List<Integer> scores = new ArrayList<>();
```
2. **解析分数**:
遍历每一行,将每个字符串转换成整数,并添加到分数列表中。使用`Integer.parseInt()`处理输入字符串。
```java
while ((line = reader.readLine()) != null) {
String[] scoreParts = line.split("\\s+"); // 按空格分割
for (String part : scoreParts) {
int score = Integer.parseInt(part);
scores.add(score);
}
}
```
3. **统计信息**:
计算分数个数(数量)和平均值(总分除以数量)。如果分数为空或有异常,记得处理这种情况。
```java
int count = scores.size();
double sum = scores.stream().mapToInt(Integer::intValue).sum();
double average = count > 0 ? sum / count : 0; // 如果分数列表非空,计算平均值
```
4. **打印结果**:
将计数和平均值输出到控制台或写入另一个文件。
```java
System.out.println("Score count: " + count);
System.out.println("Average score: " + average);
```
完整代码示例:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class ScoreProcessor {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("score.txt"))) {
List<Integer> scores = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
String[] scoreParts = line.split("\\s+");
for (String part : scoreParts) {
int score = Integer.parseInt(part);
scores.add(score);
}
}
int count = scores.size();
double sum = scores.stream().mapToInt(Integer::intValue).sum();
double average = count > 0 ? sum / count : 0;
System.out.println("Score count: " + count);
System.out.println("Average score: " + average);
} catch (Exception e) {
System.err.println("Error processing file: " + e.getMessage());
}
}
}
```
阅读全文