java怎么输入2个数字
- 后端开发
- 2025-07-25
- 6
Java中输入两个数字可以通过多种方式实现,以下是详细的方法和示例代码:
使用 Scanner 类的 nextInt() 方法(推荐)
这是最常用且简洁的方式,适用于整型数据的输入,具体步骤如下:
- 导入 Scanner 类:需要先引入 java.util.Scanner 包。
- 创建 Scanner 对象:通过 new Scanner(System.in) 实例化一个扫描器对象,用于读取标准输入流(键盘输入)。
- 提示用户并读取第一个数字:调用 scanner.nextInt() 等待用户输入第一个整数。
- 同理读取第二个数字:再次调用 scanner.nextInt() 获取第二个整数。
- 关闭资源:使用完毕后调用 scanner.close() 释放资源。
示例代码如下:

此方法简单直接,但需注意若用户误输非整数(如字母或符号),会抛出 InputMismatchException,可通过 try-catch 块进行异常处理以提高健壮性。
try { int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); } catch (InputMismatchException e) { System.out.println("错误:请确保输入的是整数!"); }
逐行读取字符串后转换为整数
如果希望更灵活地控制输入流程(例如分步提示),可以先用 nextLine() 获取整行内容,再解析为数字,这种方式能有效避免换行符残留问题,以下是实现逻辑:
- 读取整行文本:使用 scanner.nextLine() 捕获用户输入的完整行。
- 转换为整数类型:通过 Integer.parseInt() 将字符串转为 int 类型。
- 组合多次调用完成两次输入:重复上述过程两次以获取两个数字。
完整示例如下:

这种方法的优势在于能明确区分每次回车操作,适合需要精确控制交互场景的情况,但需额外处理可能的 NumberFormatException(当用户输入非数字时):
try { int num1 = Integer.parseInt(scanner.nextLine()); int num2 = Integer.parseInt(scanner.nextLine()); } catch (NumberFormatException e) { System.out.println("无效的数字格式,请重新运行程序并输入合法数值!"); }
基于循环结构的多次数据采集
对于复杂应用场景(如不确定何时停止输入),可以用循环结构配合计数器实现动态管理,核心思路是设置一个变量记录已成功读取的次数,直到达到目标数量为止,以下是一个典型实现:
import java.util.Scanner; public class LoopControlledInput { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] numbers = new int[2]; // 存储两个数字的数组 int count = 0; // 计数器初始化 while (count < 2) { // 仅当未满两个有效输入时继续循环 System.out.printf("正在等待第%d个数字...n", count + 1); try { numbers[count] = Integer.parseInt(scanner.nextLine()); // 尝试解析当前行的输入 count++; // 成功则增加计数器 } catch (NumberFormatException e) { System.out.println("️ 检测到非法字符,此次输入无效!"); // 友好的错误反馈 } } System.out.println("最终收集到的两个有效数字是:" + numbers[0] + " 与 " + numbers[1]); scanner.close(); } }
该方案的特点是容错性强,允许用户在出错后重新尝试输入,直到满足条件为止,特别适合教学场景或对用户体验要求较高的应用。

不同数据类型的扩展支持
除了基本的 int 类型外,还可以根据需求调整数据类型:
| 目标类型 | 对应方法 | 示例代码片段 |
|—————-|————————|———————————-|
| 双精度浮点数 | scanner.nextDouble() | double d = scanner.nextDouble(); |
| 长整型 | scanner.nextLong() | long l = scanner.nextLong(); |
| 单个字符 | scanner.next().charAt(0) | char c = scanner.next().charAt(0); |
若需处理带小数点的运算,可将声明改为 double num1 = scanner.nextDouble();,无需修改其他逻辑即可支持浮点运算。
相关问答FAQs
Q1: 如果用户不小心输入了非数字内容怎么办?
A: 可以使用 try-catch 捕获 InputMismatchException(针对 nextInt())或 NumberFormatException(针对 parseInt()),并在捕获块内提示用户重新输入。
while (true) { try { int num = scanner.nextInt(); break; // 成功跳出循环 } catch (InputMismatchException e) { System.out.println("请不要输入非数字字符!"); scanner.nextLine(); // 清除错误的缓冲区内容 } }
Q2: 如何确保程序不会因为未关闭 Scanner 而导致内存泄漏?
A: 始终记得在不再需要 Scanner 对象时调用其 close() 方法,尤其在图形界面程序中,未关闭的输入流可能占用系统资源,最佳实践是将关闭操作放在 finally 代码块中以保证执行:
Scanner scanner = null; try { scanner = new Scanner(System.in); // ...业务逻辑... } finally { if (scanner != null) { scanner.close(); } }