当前位置:首页 > 后端开发 > 正文

Java如何读取用户输入的数字?

在Java中输入数字通常使用 Scanner类,首先导入java.util.Scanner,创建Scanner对象关联System.in,然后调用nextInt()、nextDouble()等方法读取对应类型数值,最后关闭Scanner避免资源泄露。

使用 Scanner 类(推荐初学者)

Scanner 是 java.util 包中的工具类,适合简单输入操作。

示例代码:读取整数和浮点数

Java如何读取用户输入的数字? 第1张

关键点:

  1. nextInt()、nextDouble() 分别读取整数和浮点数。
  2. 异常处理:输入非数字时抛出 InputMismatchException。
  3. 资源释放:使用 finally 块关闭 Scanner。


使用 BufferedReader(高性能场景)

BufferedReader 位于 java.io 包,适合大量数据输入,需手动转换类型。

示例代码:读取整数

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("输入整数: "); String input = reader.readLine(); // 读取字符串 int num = Integer.parseInt(input); // 转为整数 System.out.println("整数: " + num); } catch (IOException e) { System.err.println("IO错误: " + e.getMessage()); } catch (NumberFormatException e) { System.err.println("错误:输入的不是有效整数!"); } finally { try { reader.close(); // 关闭资源 } catch (IOException e) { e.printStackTrace(); } } } }

关键点:

Java如何读取用户输入的数字? 第2张

  1. readLine() 读取整行文本。
  2. 类型转换:Integer.parseInt() 或 Double.parseDouble() 将字符串转为数字。
  3. 异常处理
    • IOException:输入流错误。
    • NumberFormatException:转换失败(如输入字母)。


输入验证与循环重试

确保用户输入有效数字,避免程序崩溃。

示例:循环直到输入正确

Scanner scanner = new Scanner(System.in); int num = 0; boolean valid = false; while (!valid) { System.out.print("请输入整数: "); try { num = scanner.nextInt(); valid = true; // 输入正确时退出循环 } catch (InputMismatchException e) { System.err.println("错误!请重新输入。"); scanner.nextLine(); // 清除错误输入 } } System.out.println("输入成功: " + num); scanner.close();


Scanner vs BufferedReader 对比

特性 Scanner BufferedReader
易用性 ⭐⭐⭐⭐(方法直接) ⭐⭐(需手动转换)
性能 ⭐⭐(较慢) ⭐⭐⭐⭐(高效缓冲)
异常处理 仅需处理 InputMismatchException 需处理 IOException 和 NumberFormatException
适用场景 简单输入、学习阶段 文件读取、大数据流处理


注意事项

  1. 资源泄漏:务必关闭 Scanner 或 BufferedReader(用 try-with-resources 更安全)。
  2. 输入缓存:混合使用 nextLine() 和 nextInt() 时,用 scanner.nextLine() 清除换行符。
  3. 数值范围:大整数用 nextLong(),避免溢出。
  4. 国际化:浮点数输入需注意小数点格式(如 5 英文 vs 1,5 欧洲)。


最佳实践总结

  • 初学者:用 Scanner,简洁易上手。
  • 生产环境:优先选 BufferedReader(尤其文件/网络输入)。
  • 健壮性:始终添加异常处理和输入验证循环。

引用说明:本文代码基于 Oracle 官方 Java 17 文档,遵循 Java 编码规范,异常处理逻辑参考《Effective Java》第3版(Joshua Bloch)。

Java如何读取用户输入的数字? 第3张

0