diff --git a/w8/ScoreRaw.java b/w8/ScoreRaw.java new file mode 100644 index 0000000..36921c7 --- /dev/null +++ b/w8/ScoreRaw.java @@ -0,0 +1,20 @@ +import java.io.BufferedReader; +import java.io.FileReader; + +public class ScoreRaw { + public static void main(String[] args) { + // 【错误点】:没有 try-catch,如果文件不存在会直接报错 + // 【错误点】:没有定义 sum + int sum = 0; + int count = 0; + + // 【错误点】:写法不严谨,资源未在 finally 中关闭,容易造成内存泄漏 + BufferedReader br = new BufferedReader(new FileReader("scores.txt")); + String line; + + while ((line = br.readLine()) != null) { + // 【错误点】:如果文件里有空行或文字,parseInt 会报错崩溃 + sum += Integer.parseInt(line); + } + } +} \ No newline at end of file diff --git a/w8/ScoreTest.java b/w8/ScoreTest.java new file mode 100644 index 0000000..828f728 --- /dev/null +++ b/w8/ScoreTest.java @@ -0,0 +1,45 @@ +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; + +public class ScoreTest { + public static void main(String[] args) { + // 定义文件路径 + String fileName = "scores.txt"; + + // 初始化变量 + int sum = 0; // 总分 + int count = 0; // 人数(行数) + + // 使用 try-with-resources 自动关闭流 + // 即使发生异常,br 也会自动关闭 + try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { + String line; + // 循环读取每一行 + while ((line = br.readLine()) != null) { + try { + // 尝试将字符串转换为整数并累加 + sum += Integer.parseInt(line); + count++; + } catch (NumberFormatException e) { + // 处理数字格式错误(例如文件中有空行或文字) + System.out.println("警告:发现无效数字格式 -> " + line + ",已跳过该行。"); + } + } + + // 计算并输出结果 + if (count > 0) { + System.out.println("读取完成。"); + System.out.println("总分: " + sum); + System.out.println("平均分: " + ((double) sum / count)); + } else { + System.out.println("文件为空或没有有效数据。"); + } + + } catch (IOException e) { + // 处理文件找不到或读取错误 + System.err.println("错误:无法读取文件 '" + fileName + "'。请确保文件存在且路径正确。"); + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/w8/scores.txt b/w8/scores.txt new file mode 100644 index 0000000..ed4879f --- /dev/null +++ b/w8/scores.txt @@ -0,0 +1,5 @@ +85 +90 +78 +100 +60 \ No newline at end of file diff --git a/w8/运行截屏比对.png b/w8/运行截屏比对.png new file mode 100644 index 0000000..ffba0ed Binary files /dev/null and b/w8/运行截屏比对.png differ