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 @   超、自律即自由  阅读(3001)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示