Java中Scanner對象中hasNext()與next()方法淺析

相信很多像我一樣在剛剛接觸Java的時候都有遇到這樣的問題:
在這裏插入圖片描述
我們可能希望的是:先輸出“請輸入:”然後我們就可以在控制檯輸入一個字符串或數字。
但是,事實卻是:控制檯要我們先輸入,輸入後才顯示“請輸入:”。

在這裏插入圖片描述
這是怎麼回事?
原因:
首先,sc.hasNext()和sc.next()都可以用來輸入

在這裏插入圖片描述
在這裏插入圖片描述
我們,可以發現,hasNext()返回的是boolean類型而next()返回的是你輸入的那個值,
sc.hasNext()可以理解爲把我們輸入的值存到了sc當中而sc.next()可以理解爲從sc中取值,取值後將標識符後移(可以理解爲:取完值後這個值就不在了),如果sc中沒有值了,它也會要求輸入一個值(前面說了它們兩都可以輸入)。
然後我們再來分析一下開始的那段程序:

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

hasNext()是判斷是否輸入了內容,next()取輸入的字符串,nextInt()取輸入的整數

以上內容純屬個人理解(如果理解不同,請查閱官方文檔)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章