你的第一个理解是错误的。
我从过去的经验中了解到的是 .nextInt() 或
.nextDouble() 将继续搜索,直到整数或双精度数
在同一行或下一行中找到并不重要
nextInt()
and nextDouble()
分别等待整数和双精度数。如果它得到字符串而不是它的期望,它会抛出InputMismatchException
.
您可以运行此代码并亲自查看。
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
s.nextInt();
}
}
根据你的报价:
.nextInt() 或 .nextDouble() 将继续搜索,直到整数
或者在同一行或下一行中找到双精度,这并不重要
给出输入:Abcdf234gd
。你不会得到234
。你得到InputMismatchException
.
For .next()
and .nextLine()
,
.next()
:仅读取并返回字符串,直到遇到空格或EOF
.
.nextLine()
:返回字符串,直到遇到\n
or \r
or EOF
。意思是,它返回整行。
光标位置
next()
:
考虑字符串:
ABC DEF GHI JKL MNO PQR STU VWX YZ
初始位置:
->ABC DEF GHI JKL MNO PQR STU VWX YZ
你打电话时next()
,光标移动到:
ABC ->DEF GHI JKL MNO PQR STU VWX YZ
并返回ABC
nextLine()
:
考虑字符串:
ABC DEF GHI JKL
MNO PQR STU VWX
YZ
初始位置:
->ABC DEF GHI JKL
MNO PQR STU VWX
YZ
你打电话时nextLine()
,光标移动到下一行:
ABC DEF GHI JKL
->MNO PQR STU VWX
YZ
并返回ABC DEF GHI JKL
.
我希望它有帮助。