1.缓存问题
next()或者nextInt|Double|Float...
方法遇空格结束,nextLine()
读取的数据包含空格。
2. Scanner多次关闭
在程序运行代码中,如果有多个scanner,当调用一次close方法之后,在此实例化scanner对象并且获取数据的时候可能会抛出NoSuchElementException
,原因就是程序运行期间Scanner共用一个System.in
对象,所以说当再次new Scanner(System.in)
的时候就会报错,因为流已经关闭。看下底层源码:
private void throwFor() {
skipped = false;
//sourceClosed是一个boolean,close调用后被置位true
if ((sourceClosed) && (position == buf.limit()))
throw new NoSuchElementException();
else
throw new InputMismatchException();
}