java.util.NoSuchElementException 解决方法

java.util.NoSuchElementException

今天在编写一个简单的控制台计算器时,遇到了这样的错误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开启和关闭。

修改后的代码如下:

 

 

posted @ 2022-03-22 20:30  超、自律即自由  阅读(2878)  评论(0编辑  收藏  举报