您的位置:首页 >Java Scanner 读取数字并求和方法
发布于2026-01-16 阅读(0)
扫一扫,手机访问

本文详解 Scanner 读取文件数字时的常见误区,重点说明为何 `new Scanner(path)` 无法直接替代 `new Scanner(new File(path))`,并提供健壮、简洁、符合最佳实践的实现方案。
在 Java 中,Scanner 构造函数接受多种输入源(InputStream、Readable、File、Path、甚至 String),但传入字符串路径(如 "data.txt")与传入 File 对象有本质区别:
? 补充说明:Java 7+ 确实支持 new Scanner(Paths.get("data.txt"))(需传入 java.nio.file.Path 对象),但这与直接传 String 路径完全不同。Scanner(String) 构造器仅用于解析内存中的字符串字面量。
以下是推荐的、健壮且简洁的实现方式(使用 try-with-resources + Path + Files.newInputStream(),兼容现代 Java 最佳实践):
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
public class SumNumbers {
public static void main(String[] args) throws IOException { // 委托异常,避免空 catch
String path = "numbers.txt";
int sum = 0;
try (Scanner s = new Scanner(Files.newInputStream(Paths.get(path)))) {
while (s.hasNext()) { // 关键:不再用 hasNextInt() 控制循环
if (s.hasNextInt()) {
sum += s.nextInt();
} else {
s.next(); // 跳过非数字 token(如字母、符号、空行)
}
}
}
System.out.println("Sum: " + sum);
}
}✅ 关键改进点说明:
⚠️ 注意事项:
掌握这一模式,不仅能正确求和,更能写出可读、可维护、符合 Java 生态演进方向的 I/O 代码。
上一篇:Spread表格控件激活方法详解
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9