转载自:https://blog.csdn.net/gao_zhennan/article/details/80562548
hasNext方法解释:如果此扫描器的输入(缓冲区)中有另一个token(输入的字符或数字),则返回true。注意!!根本没有提到什么时候返回false。其实执行过程是这样的(重点:),当执行到hasNext()时,它会先扫描缓冲区中是否有字符,有则返回true,继续扫描。直到扫描为空,这时并不返回false,而是将方法阻塞,等待你输入内容然后继续扫描。
所以用想用hasNext来探测输入完毕,是不行的。
例:问题是输入的一个句子,然后输出每一个单词
就不能用next()一个个字符串扫下去了,再用hasNext来探测输入完毕,因为hasNext只会一直等,等你输入下一个。
处理方法有
1.可以选择nextLine一次扫一个句子,然后再切割。(因为句子只有一个)。
2.或者对每个字符串用正则表达式检查是否有句号,有句号就停止扫描。