- next():
一定要(读取到有效字符)!后才可以结束输入
,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉
,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
所以next方法不能得到带有空格的字符串。 - nextLine():以Enter为结束符,也就是说 n
extLine()方法返回的是输入回车之前的所有字符。
可以得到带有空格的字符串。
易错!(请对比next()和nextLine()的连用)
Scanner in=new Scanner(System.in);
System.out.print("first:");
String str1=in.nextLine();
System.out.print("Second:");
String str2=in.next();
System.out.println("output:"+str1+str2);
//输出
first:Hello
Second:World
output:HelloWorld //正常输出
Scanner in=new Scanner(System.in);
System.out.print("first:");
String str1=in.next();
System.out.print("Second:");
String str2=in.nextLine();
System.out.println("output:"+str1+str2);
//输出
first:Hello
Second:output:Hello //错误!
因为next()以Enter键作为结束符,所以nextLine()自动读取了被next()去掉的Enter键来作为它的结束符,所以没办法给str2从键盘输入值。
此处我有一个不明白之处,希望有人能解答! next()可以用空格键或Tab键作为结束符,为什么上面的程序只能用Enter键作为结束符?
解决办法
在每一个 next()语句之后加一个nextLine()语句,将被next()去掉的Enter等结束符过滤掉。
Scanner in=new Scanner(System.in);
System.out.print("first:");
String str1=in.next();
in.nextLine();
System.out.print("Second:");
String str2=in.nextLine();
System.out.println("output:"+str1+str2);
//输出
first:Hello
Second:World
output:HelloWorld