上一篇
Java如何输入整数?
- 后端开发
- 2025-06-15
- 4309
在Java中录入整数通常使用Scanner类,首先导入java.util.Scanner,创建Scanner对象关联System.in,再调用nextInt()方法读取用户输入的整数值,Scanner sc = new Scanner(System.in); int num = sc.nextInt();
在Java中录入整数是基础操作,常用Scanner
和BufferedReader
两类方法,以下是详细实现方案:
使用Scanner类(推荐初学者)
步骤:
- 导入
java.util.Scanner
包 - 创建Scanner对象关联标准输入流
- 调用
nextInt()
读取整数 - 关闭资源(Java 7+可用try-with-resources自动关闭)
import java.util.Scanner; public class ReadInteger { public static void main(String[] args) { // 创建Scanner对象 try (Scanner sc = new Scanner(System.in)) { System.out.print("请输入整数: "); int num = sc.nextInt(); // 读取整数 System.out.println("您输入的整数是: " + num); } catch (Exception e) { System.out.println("输入错误!请确保输入的是整数"); } } }
关键点:
nextInt()
遇到非数字会抛出InputMismatchException
- try-with-resources自动关闭资源,避免内存泄漏
- 需处理非整数输入(通过catch捕获异常)
使用BufferedReader类(高性能场景)
适用场景:大文件读取或需更高性能时
步骤:
- 导入
java.io.BufferedReader
和java.io.InputStreamReader
- 用BufferedReader包装System.in
- 用
readLine()
读取整行文本 - 用
Integer.parseInt()
转换字符串为整数
import java.io.BufferedReader; import java.io.InputStreamReader; public class ReadIntegerBuffered { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { System.out.print("请输入整数: "); String input = reader.readLine(); // 读取文本行 int num = Integer.parseInt(input); // 字符串转整数 System.out.println("您输入的整数是: " + num); } catch (NumberFormatException e) { System.out.println("错误:输入内容不是有效整数"); } catch (Exception e) { System.out.println("发生未知错误: " + e.getMessage()); } } }
关键点:
Integer.parseInt()
遇到非数字会抛NumberFormatException
- 需显式处理IOException(如文件读取错误)
两种方法对比
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Scanner | 代码简洁,自带类型转换 | 性能较低,异常处理复杂 | 简单控制台输入 |
BufferedReader | 性能高(尤其多次读取),节省系统资源 | 需手动转换类型,代码稍冗长 | 大数据量或高频读取场景 |
注意事项
-
异常处理必须完善
- 用
try-catch
捕获InputMismatchException
(Scanner)或NumberFormatException
(BufferedReader) - 避免程序因非规输入崩溃
- 用
-
资源关闭
- 使用try-with-resources(如
try (Scanner sc = ...)
)确保自动关闭 - 手动调用
close()
可能遗漏(不推荐)
- 使用try-with-resources(如
-
输入验证扩展
- 若需循环输入直到合法:
while (true) { try { System.out.print("请重新输入: "); int num = sc.nextInt(); break; // 合法则退出循环 } catch (InputMismatchException e) { sc.nextLine(); // 清空错误输入 System.out.println("无效输入!"); } }
- 若需循环输入直到合法:
- 初学者首选Scanner:语法简单,适合基础输入
- 高性能选BufferedReader:处理大量数据时效率更高
- 始终添加异常处理:保障程序健壮性
引用说明:本文代码示例基于Oracle官方Java文档标准编写,遵循Java SE 17规范,Scanner和BufferedReader的用法参考《Java核心技术卷I》第3章I/O流处理。