4 changed files with 70 additions and 0 deletions
@ -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); |
|||
} |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,5 @@ |
|||
85 |
|||
90 |
|||
78 |
|||
100 |
|||
60 |
|||
|
After Width: | Height: | Size: 126 KiB |
Loading…
Reference in new issue