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開啟和關閉。

修改后的代碼如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM