您最初的理解是错误的。
我从过去的经验中了解到的是.nextInt()或.nextDouble()会继续搜索,直到在同一行或下一行找到整数或双精度数都没有关系
nextInt()并且分别
nextDouble()等待整数和double。如果它得到的不是预期的字符串,则抛出
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。
对于
.next()和
.nextLine(),
.next():仅读取并返回字符串,直到遇到空格或
EOF。
.nextLine():返回字符串,直到遇到
nor
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 VWXYZ
初始位置:
->ABC DEF GHI JKLMNO PQR STU VWX YZ
当您调用时
nextLine(),光标将移至下一行:
ABC DEF GHI JKL->MNO PQR STU VWXYZ
然后返回
ABC DEF GHI JKL。
希望对您有所帮助。



