今天測試j**a**需要用到控制台輸入,這就需要scanner類中的方法,但是對其中的hasnext()方法不是特別理解,如下是對該方法的粗淺理解。
hasnext()方法,其源**如下:
publicboolean
hasnext()
readinput();
}boolean result =hastokeninbuffer();
return
revertstate(result);
}
執行過程:
這個方法呼叫了ensureopen(),所以它要求確保scanner一定是開啟狀態的,如果你在呼叫hasnext()時,scanner已經通過close()方法關閉,它並不會從快取中進行讀取,而是丟擲scanner closed的異常;
然後就是對scanner索引狀態的儲存,這在後面通過revertstate()進行索引狀態恢復時還會用到;
通過modcount++記錄索引狀態改變的次數;
如果源**沒有完成,則在通過hastokeninbuffer()方法判斷快取中還有token後,則會返回true,同時通過revertstate()進行索引狀態恢復;
如果通過hastokeninbuffer()方法判斷快取中沒有token,就需要用readinput()進行資料讀入到快取;
如果源**已經完成或者判斷 hastokeninbuffer()方法為false時(意味者方法還沒有return結束),在這裡將通過 hastokeninbuffer()方法進行判斷;
返回判斷的布林值的同時對索引狀態進行恢復。
可以看出:
該方法要求你的scanner必須為開啟狀態;
只要**未完成,就會先從目前索引位置對快取進行判斷,如果為false,就會將新的資料讀入快取,這意味著只要**沒完成,則永遠不能看返回false,直到返回true為止;
如果**完成了,則才有可能返回false。
常用類 Scanner類
scanner類概述 jdk5以後用於獲取使用者的鍵盤輸入 構造方法 public scanner inputstream source 基本格式 hasnext 判斷是否還有下乙個輸入項,其中 可以是int,double等。如果需要判斷是否包含下乙個字串,則可以省略 next 獲取下乙個輸入項。的...
Java中Scanner類的使用
scanner是乙個可以使用正規表示式來解析基本型別和字串的簡單文字掃瞄器。scanner使用分隔符模式將其輸入分解為標記,預設情況下該分隔符模式與空白匹配。然後可以使用不同的 next 方法將得到的標記轉換為不同型別的值。例如,以下 使使用者能夠從 system.in 中讀取乙個數 scanner...
Scanner類的使用
1 next 方法 以空格為分隔符,出現空格換一行 scanner in new scanner system.in while in.hasnext 輸入 asjdgi kjashd 空格 空格 空格 asd 輸出 asjdgi kjashd asd2 nextline 方法 輸入一行,輸出一行,...