next()
一定要读取到有效字符后才可以结束输入,
对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉
只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
nextLine()
结束符只是Enter键
该方法返回的是Enter键之前的所有字符,可以得到带空格的字符串
nextInt()
控制台输入的数据字符会先进缓冲区中等待Scanner的扫描,除非遇到空格或者回车之类的空白符才会停止扫描,nextInt() 的原理是扫描到空白符时会把空白符前面的数据读取走,最后再缓冲区遗留空白符——"\r
"。nextLine() 的原理是把连同空白符在内的一行一同读取。所以这里就不难理解为什么读完nextInt()后nextLine()再读是一串空字符,另外next(),nextDouble(),nextFloat() 这些与nextInt()同理,所以使用时都得注意空格符。
while(sc.hasNext()) {
int a=sc.nextInt();
String b=sc.nextLine();
System.out.println(a);
System.out.println(b);
}
读完nextInt()后nextLine()再读是一串空字符