有2个观察结果:
myScannerInstance.nextInt()
在新行字符后面使用叶子。因此,如果在nextLine()
之后调用nextInt()
,nextLine()
则会读取换行符,而不是实际数据。因此,您将不得不在之后添加另一个nextLine()
,nextInt()
以吞噬该 悬挂 的换行符。nextLine()
不会留下换行符。
代码:
int age=myScannerInstance.nextInt();String name = myScannerInstance.nextLine();// here the actual name will not be read. The new line character will be read.
nextInt()
将再次返回基础流并读取。IO调用花费时间(昂贵)。它将进行大量检查以获取下一个整数。nextLine()
只会做一次检查。因此,如果调用nextLine()
一次并读取5个整数(作为单行String),将其拆分并解析为整数(使用Integer.parseInt()
),则比分别读取每个int更快,更高效。
在运行非常大的循环时,使用
nextLine()+
parseInt()将为您带来巨大的性能优势。
用法:
使用
nextInt()具有其他优势,如果输入文本不是整数,则将获得异常。例子
123被接受..
123sdsa将抛出一个
InputMismatchException。因此,您可以捕获并适当地处理它。
using
nextLine()将读取整行,因此,它将读取整个String
sada1231,
NumberFormatException如果无法将String解析为数字,则会失败。您将不得不处理该异常。
通常,一个
nextLine()/
nextInt()通话不会有太大的区别。如果您有循环,或者正在读取大量数据,则使用
readLine()with
parseInt()将非常有效。



