1. 程式人生 > >Java中Scanner物件中hasNext()與next()方法淺析

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中,如果沒有值,它就會被阻塞要求我們給它一個值。

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