我从过去的经验中了解到,nextInt()
或nextDouble()
会继续搜索,直到整数或双重在同一行或下一行中找到它并不重要,而通过扫描程序类next()
读取字符串作为输入,在空格之前考虑这些字符串并将光标保持在同一行中,nextLine()
如果在next()
之前使用剩余部分,则考虑剩余的字符串。代码中的nextLine()
,有人可以帮助我更详细地理解这一点,特别是关于nextLine()
它在哪里开始以及光标结束的位置?另外,如果我认为有任何错误,请告诉我。
答案 0 :(得分:1)
你的第一个理解是错误的。
我从过去的经历中理解的是.nextInt()或 .nextDouble()将继续搜索,直到整数或双精度 在相同或下一行中找到无关紧要
nextInt()
和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
。
适用于.next()
和.nextLine()
,
.next()
:只读取并返回字符串,直到遇到空格或EOF
。
.nextLine()
:返回字符串,直到遇到\n
或\r
或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
。
我希望它有所帮助。