我从过去的经验中了解到的是, nextInt()或nextDouble()将继续搜索,直到在同一行或下一行找到整数或双精度都没有关系,而通过扫描器类读取输入的字符串时,则会next()考虑空格和将光标保持在同一行,如果在in代码之前使用if nextLine()会考虑剩余的光标,有人可以帮助我更详细地了解这一点,尤其是关于它的开始位置和结束位置吗?另外,如果我认为任何错误是正确的,请告诉我。next()``nextLine()``nextLine()
nextInt()
nextDouble()
next()
nextLine()
next()``nextLine()``nextLine()
您最初的理解是错误的。
我从过去的经验中了解到的是.nextInt()或.nextDouble()会继续搜索,直到在同一行或下一行找到整数或双精度数都没有关系
nextInt()并且分别nextDouble()等待整数和double。如果它得到的不是预期的字符串,则抛出InputMismatchException。
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。
Abcdf234gd
234
对于.next()和.nextLine(),
.next()
.nextLine()
.next():仅读取并返回字符串,直到遇到空格或EOF。
EOF
.nextLine():返回字符串,直到遇到\nor \r或or 为止EOF。意思是,它返回整行。
\n
\r
光标位置
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
ABC
nextLine() :
当您调用时nextLine(),光标将移至下一行:
ABC DEF GHI JKL ->MNO PQR STU VWX YZ
然后返回ABC DEF GHI JKL。
ABC DEF GHI JKL
希望对您有所帮助。