Java Scanner.nextInt() 方法

2025年2月12日 | 阅读 5 分钟

Java 中的 nextInt() 方法 是 java.util.Scanner 类的一部分,该类提供了用于解析和读取各种原始类型和字符串的方法。Java Scanner 类的 nextInt() 方法用于将输入的下一个标记扫描为 int。Java nextInt() 方法有两种不同的类型,可以根据其参数进行区分。它们是:

  • Scanner.nextInt() 方法
  • Scanner.nextInt(int radix) 方法

Scanner.nextInt() 方法

它用于将输入的下一个标记扫描为 int。

Scanner.nextInt(int radix) 方法

这是 Java Scanner 类的一个内置方法,用于在指定的基数 (radix) 下将输入的下一个标记扫描为 int。

语法

以下是 nextInt() 方法的声明

参数

数据类型参数描述必需/可选
int基数它用于将标记解释为 int 值。必需

返回值

nextInt() 方法返回从输入中扫描到的 int 值。

异常

使用 nextInt() 时,可能会发生各种异常

InputMismatchException - 如果下一个标记与 Integer 正则表达式不匹配,或超出范围,则抛出此方法异常。

IllegalStateException - 如果在扫描器关闭后调用,则抛出此异常。

IllegalArgumentException - 如果指定的基数超出范围,则抛出此异常。

NoSuchElementException: 如果没有更多可用标记,则抛出此异常。

兼容版本

Java 1.5 及以上版本

常见用例

  • 读取多个整数: 通常在循环中使用,以从输入中读取一系列整数。
  • 处理来自文件的输入: 用于逐行从文件中读取整数。
  • 交互式程序: 在需要用户输入的交互式控制台应用程序中常用。

性能考虑

Scanner 类相对方便,但对于高性能应用程序来说可能不是最快的。对于性能要求更高的应用程序,尤其是涉及大量输入的应用程序,可能更倾向于使用 BufferedReader 结合手动解析或其他 I/O 技术。

nextInt() 方法将输入的下一个标记读取为 int。此方法将

  • 如果从标准输入读取,则等待用户输入
  • 解析下一个完整的标记(由分隔符模式定义)
  • 尝试将解析的标记转换为 int
  • 如果输入不是有效的 int,则抛出异常

示例 1:从标准输入读取一个整数

ReadingIntegerExapmle1.java

输出

Enter an integer: 13
You entered: 13

在此示例中,程序提示用户输入一个整数。nextInt() 方法读取输入,然后程序打印输入的整数。

示例 2:处理无效输入

ReadingIntegerExapmle2.java

输出

Enter an integer: e
That's not a valid integer!

在此,如果用户输入了非整数内容,将捕获 InputMismatchException 并显示一条消息。

分隔符

Scanner 类使用分隔符来分隔输入标记。默认情况下,使用空白字符(空格、制表符、换行符)。我们可以使用 useDelimiter() 方法更改分隔符。

示例 3:更改分隔符

ReadingIntegerExapmle3.java

输出

Enter integers separated by commas: 1,2,3,4,
You entered: 1
You entered: 2
You entered: 3
You entered: 4

在此示例中,分隔符设置为逗号。nextInt() 方法现在将期望由逗号分隔的整数。

区域设置

Scanner 类使用 Locale 来解析数字。默认 Locale 是 JVM 的 Locale。我们可以使用 useLocale() 方法设置特定的 Locale。

示例 4:使用不同的 Locale

ReadingIntegerExapmle4.java

输出

Enter an integer: 80
You entered: 80

在此示例中,Locale 设置为德国。这可能会影响数字的解析方式,特别是小数和千位分隔符。

示例 5:异常处理

ReadingIntegerExapmle5.java

输出

Enter an integer: t
Input was not a valid integer.

让我们看一些其他例子。

示例 6:ScannerNextIntExample1.java

输出

Not Found Int value: Facebook.com
Found Int Value: 13
Not Found Int value: +
Not Found Int value: 3.0
Not Found Int value: =
Found Int Value: 16
Not Found Int value: true

示例 7:ScannerNextIntExample2.java

输出

Enter the amount: 800
Enter the Total Balance: 1500
New Balance is: 200

示例 8:ScannerNextIntExample3.java

输出

Number: 12345
String: JavaTpoint
Output: 12345, JavaTpoint

示例 9:ScannerNextIntExample4.java

输出

85
179
-37
-7
29

示例 10:ScannerNextIntExample5.java

输出

Exception in thread "main" java.lang.IllegalArgumentException: radix:598670
	at java.base/java.util.Scanner.setRadix(Scanner.java:1368)
	at java.base/java.util.Scanner.nextLong(Scanner.java:2370)
	at myPackage.ScannerNextIntExample5.main(ScannerNextIntExample5.java:10)

最佳实践

  • 异常处理: 读取输入时始终处理潜在的异常。
  • 资源管理: 确保在使用后正确关闭扫描器以释放资源。
  • 输入验证: 如果期望特定格式或范围,请验证输入。