上一篇
在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流处理。
