diff --git a/W7/ScoreAverage.java b/W7/ScoreAverage.java new file mode 100644 index 0000000..3083a5e --- /dev/null +++ b/W7/ScoreAverage.java @@ -0,0 +1,82 @@ +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class ScoreAverage { + public static void main(String[] args) { + String fileName = "scores.txt"; + int sum = 0; + int count = 0; + + // 尝试找到文件 + File file = findFile(fileName); + + if (file == null) { + System.err.println("错误:找不到文件 " + fileName); + System.err.println("请将 " + fileName + " 放在以下任意位置:"); + System.err.println(" 1. " + System.getProperty("user.dir")); + System.err.println(" 2. " + System.getProperty("java.class.path") + " 目录下"); + System.err.println("\n或者使用绝对路径创建文件。"); + return; + } + + // 使用 try-with-resources 自动关闭流 + try (BufferedReader br = new BufferedReader(new FileReader(file))) { + String line; + while ((line = br.readLine()) != null) { + // 跳过空行 + if (line.trim().isEmpty()) { + continue; + } + try { + int score = Integer.parseInt(line.trim()); + sum += score; + count++; + } catch (NumberFormatException e) { + // 数字格式错误处理 + System.err.println("数字格式错误,忽略无效行: " + line); + } + } + + // 计算并输出平均分 + if (count > 0) { + double average = (double) sum / count; + System.out.println("成功读取 " + count + " 个成绩"); + System.out.println("总分: " + sum); + System.out.println("平均分: " + average); + } else { + System.out.println("错误:没有有效的成绩数据。"); + } + + } catch (IOException e) { + System.err.println("读取文件时出错: " + e.getMessage()); + } + } + + // 辅助方法:在多个位置查找文件 + private static File findFile(String fileName) { + // 1. 当前工作目录 + File file = new File(fileName); + if (file.exists()) { + return file; + } + + // 2. 用户主目录 + file = new File(System.getProperty("user.home"), fileName); + if (file.exists()) { + return file; + } + + // 3. 桌面目录 + file = new File(System.getProperty("user.home") + "/Desktop", fileName); + if (file.exists()) { + return file; + } + + return null; + } +} diff --git a/W7/score成功形式.png b/W7/score成功形式.png new file mode 100644 index 0000000..26c56d5 Binary files /dev/null and b/W7/score成功形式.png differ diff --git a/W7/score报错形式.png b/W7/score报错形式.png new file mode 100644 index 0000000..7d7b5f3 Binary files /dev/null and b/W7/score报错形式.png differ