next(); 从控制台获取字符串,如果字符串中包含空格,只会获取第一个作为接收的字符串。比如:输入hello I am a chinese!,接收到的只是hello。

nextLine();从控制台获取字符串,字符串中可以包含空格,以回车符作为接收结束标志。比如:输入hello I am a chinese!,接收到的是hello I am a chinese!。


如何让next();方法也可以向类似nextLine()一样接收包括空格的字符串呢?

Scanner类中有hasNext()方法,注意,这个方法是一个阻塞方法,表示每次从控制台读取一个字符串。为了保证能够结束输入,可以指定一个结束输入的字符串,比如"quit"表示输入结束。实现代码如下:


String s;

while(!sc.hasNext("quit"))

{

   s = sc.next();

   System.out.println(s);

}


这样,next();就有了和nextLine()类似的功能,同时输入"quit"字符串保证输入状态结束。