出現問題的地方
原出錯代碼如下:
text方法調用了4個(加、減、乘、除)方法,並且test方法用到了死循環,這5個方法都new了一個scanner,並在每個方法的最后都關閉了scanner
我想的是用一次,new一次,用完在關閉,下次用到在new,在關閉,這樣也不會消耗太多的資源
但是運行后,出現了這樣的錯誤
解決方法
出現錯誤后我先是看自己寫的代碼,感覺沒有什么邏輯錯誤,然后我就去找搜NoSuchElementException,翻譯過來是:沒有這樣的元素例外。不懂什么意思,然后去百度搜
看到別人的解決辦法后,我似乎明白了自己的錯誤
問題出在我多次new scanner 和close scanner上,上面創建scanner對象時,括號里的參數是 System.in,而in是一個final類型,它一旦被初始化就不能改變。所以,不過后面創建多少個scanner類對象,其實都是返回同一個InputStream流。也就是說,每一次賦給新對象的地址是同一個, 一旦關閉流時,后面的對象所用的流就是關閉狀態 。
所以:在Scanner使用的最后才關閉流,這樣既不會報錯,也不會造成資源的浪費 ,當然最好是在同一個方法里使用scanner開啟和關閉。
修改后的代碼如下: