java.util.NoSuchElementException 解决方法
出现问题的地方
原出错代码如下:
text方法调用了4个(加、减、乘、除)方法,并且test方法用到了死循环,这5个方法都new了一个scanner,并在每个方法的最后都关闭了scanner
我想的是用一次,new一次,用完在关闭,下次用到在new,在关闭,这样也不会消耗太多的资源
但是运行后,出现了这样的错误
解决方法
出现错误后我先是看自己写的代码,感觉没有什么逻辑错误,然后我就去找搜NoSuchElementException,翻译过来是:没有这样的元素例外。不懂什么意思,然后去百度搜
看到别人的解决办法后,我似乎明白了自己的错误
问题出在我多次new scanner 和close scanner上,上面创建scanner对象时,括号里的参数是 System.in,而in是一个final类型,它一旦被初始化就不能改变。所以,不过后面创建多少个scanner类对象,其实都是返回同一个InputStream流。也就是说,每一次赋给新对象的地址是同一个, 一旦关闭流时,后面的对象所用的流就是关闭状态 。
所以:在Scanner使用的最后才关闭流,这样既不会报错,也不会造成资源的浪费 ,当然最好是在同一个方法里使用scanner开启和关闭。
修改后的代码如下: