Java如何获取输入数字
- 后端开发
- 2025-06-11
- 18
使用 Scanner 类(推荐初学者)
Scanner 是 java.util 包中的工具类,提供简单的文本解析功能,适合基础输入操作。
完整示例代码
import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 创建Scanner对象 System.out.print("请输入整数:"); int numberInt = scanner.nextInt(); // 直接读取整数 System.out.print("请输入小数:"); double numberDouble = scanner.nextDouble(); // 直接读取小数 System.out.println("整数:" + numberInt); System.out.println("小数:" + numberDouble); scanner.close(); // 关闭资源防止内存泄漏 } }
关键注意事项
-
输入验证:
使用 hasNextInt() 或 hasNextDouble() 避免无效输入导致的崩溃:

-
资源释放:
务必调用 scanner.close() 释放系统资源(如从文件读取时)。
-
数据类型匹配:

- nextInt() → 整数
- nextDouble() → 双精度小数
- nextFloat() → 单精度小数
-
异常处理:
- IOException:处理输入流错误
- NumberFormatException:捕获非数字输入
-
性能优势:
BufferedReader 的缓冲机制减少I/O操作次数,适合高频输入场景。

-
灵活转换:
通过 Integer.parseInt() 或 Double.parseDouble() 自由转换类型。
- 优先选择 Scanner:
适合大多数控制台程序,简化数字解析流程。
- 严格验证输入:
使用 hasNextInt() 或 try-catch 避免非法输入崩溃。
- 资源必须关闭:
在 finally 块或 try-with-resources 中关闭流: try (Scanner scanner = new Scanner(System.in)) { // Java 7+ 自动关闭 // 操作代码 }
- 明确数据类型:
整数用 int/long,小数用 float/double,避免精度损失。
使用 BufferedReader + InputStreamReader(高性能场景)
适用于需要高效读取大量输入的场景(如文件/网络流),需手动转换数据类型。
完整示例代码
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BufferedReaderExample { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("请输入整数:"); int numberInt = Integer.parseInt(reader.readLine()); // 字符串转整数 System.out.print("请输入小数:"); double numberDouble = Double.parseDouble(reader.readLine()); // 字符串转小数 System.out.println("整数:" + numberInt); System.out.println("小数:" + numberDouble); } catch (IOException e) { System.err.println("输入输出错误:" + e.getMessage()); } catch (NumberFormatException e) { System.err.println("格式错误:必须输入数字!"); } finally { try { reader.close(); // 确保资源关闭 } catch (IOException e) { System.err.println("关闭资源失败:" + e.getMessage()); } } } }
关键优势与风险控制
方法对比与选型建议
特性 Scanner 类 BufferedReader 类 易用性 ⭐⭐⭐⭐ (直接解析数字) ⭐⭐ (需手动转换) 性能 ⭐⭐ (小型输入) ⭐⭐⭐⭐ (缓冲优化) 异常控制 ⭐⭐ (需配合 hasNextXxx 验证) ⭐⭐⭐ (明确捕获异常) 适用场景 控制台交互、简单应用 文件/网络流、高频输入
最佳实践总结
引用说明:本文代码示例基于 Oracle 官方 Java 17 文档,遵循 Java 标准库规范,异常处理逻辑参考《Effective Java》第 3 版条目 72(妥善处理异常)。