91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Java Scanner對象中hasNext()與next()方法

發布時間:2021-11-01 09:17:45 來源:億速云 閱讀:323 作者:iii 欄目:開發技術

本篇內容介紹了“怎么使用Java Scanner對象中hasNext()與next()方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Scanner對象中hasNext()與next()方法

相信很多像我一樣在剛剛接觸Java的時候都有遇到這樣的問題:

怎么使用Java Scanner對象中hasNext()與next()方法

我們可能希望的是:先輸出“請輸入:”然后我們就可以在控制臺輸入一個字符串或數字。

但是,事實卻是:控制臺要我們先輸入,輸入后才顯示“請輸入:”。

怎么使用Java Scanner對象中hasNext()與next()方法

這是怎么回事?

原因:

首先,sc.hasNext()和sc.next()都可以用來輸入

怎么使用Java Scanner對象中hasNext()與next()方法

怎么使用Java Scanner對象中hasNext()與next()方法

怎么使用Java Scanner對象中hasNext()與next()方法

怎么使用Java Scanner對象中hasNext()與next()方法

我們,可以發現,hasNext()返回的是boolean類型而next()返回的是你輸入的那個值,

sc.hasNext()可以理解為把我們輸入的值存到了sc當中而sc.next()可以理解為從sc中取值,取值后將標識符后移(可以理解為:取完值后這個值就不在了),如果sc中沒有值了,它也會要求輸入一個值(前面說了它們兩都可以輸入)。

然后我們再來分析一下開始的那段程序:

怎么使用Java Scanner對象中hasNext()與next()方法

首先,進入while循環,sc.hasNext()就要求我們給他輸入一個值,所以就不會輸出“請輸入:”,當我們輸完后,String str = sc.next()中,會從sc中取出我們輸入的那個值返回到str中,如果沒有值,它就會被阻塞要求我們給它一個值。

輸入hasNext()和hasNextLine()方法的區別

最近在學習在牛客網上面做一些算法練習題.

發現在一些情況下寫好的Java代碼在本機運行時正常的結果,

但是就是無法通過牛客網的測試用例。

經過檢查,最終定位到讀取測試用例的位置上,發現:

Scanner scanner = new Scanner(System.in);
// 當使用 hasNextLine 方法實現判斷是否還有數據時
// 會報錯
while(scanner.hasNextLine()){
 // TODO:implement code
}
// 當將 hasNextLine 修改為 hasNext() 方法時
// 程序恢復正常
while(scanner.hasNext()){
 // TODO:implement code
}

通過在網上搜索,獲取到這兩種方法的區別:

在檢查輸入流時:

  • hasNext()方法會判斷接下來是否有非空字符.如果有,則返回true,否則返回false

  • hasNextLine() 方法會根據行匹配模式去判斷接下來是否有一行(包括空行),如果有,則返回true,否則返回false

比如當前我們有如下測試用例:

7 15 9 5

這個測試用例在牛客網上是以文件的形式進行存儲的.

而在 linux 系統中文件的結尾會有一個換行符\n,也就是說從System.in輸入流中真正讀取到的數據流是這樣的:

7 15 9 5\n

程序在處理完5之后,輸入流中就只剩下一個換行符\n了,在處理完5之后while再去進行循環判斷,此時hasNext()方法和hasNextLine()方法去判斷得到的結果就產生了差異.

  • hasNext()方法會認為之后再沒有非空字符,會返回一個false

  • hasNextLine() 方法會認為換行符\n是一個空行,符合行的匹配模式,則會返回一個true,但實際上由于之后再沒有數據了,所以會在讀取輸入流的時候發生異常,從而導致整個運行報錯.

建議方案

采用hasNextXxxx() 的話,后面也要用nextXxxx():

比如前面用hasNextLine(),那么后面要用 nextLine() 來處理輸入;

后面用 nextInt() 方法的話,那么前面要使用 hasNext()方法去判斷.

“怎么使用Java Scanner對象中hasNext()與next()方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

唐河县| 肇源县| 富川| 临西县| 灵璧县| 兴海县| 庆元县| 和平县| 吴江市| 盱眙县| 崇信县| 米脂县| 林州市| 怀来县| 盐津县| 哈尔滨市| 盐城市| 白玉县| 天津市| 邵东县| 昔阳县| 三门县| 泾川县| 依兰县| 漳浦县| 郯城县| 邓州市| 广宁县| 高青县| 嘉禾县| 德州市| 宁都县| 开原市| 清苑县| 瓮安县| 陆良县| 宾阳县| 福鼎市| 东乌| 永寿县| 鹰潭市|