2013-10-07 155 views
1

Stackoverflow,你好。 我有問題理解輸出這段代碼Java掃描器nextLong

public static void main (String[] args) 
{ 
    String context = "0100 55 3L 62D 127 6F (int)7"; 
    Scanner s = new Scanner(context); 
    while(s.hasNextLong()) { 
     System.out.print(s.nextLong() + ","); 
    } 
} 

輸出爲100,55, ,但我不明白爲什麼127沒有被列入到輸出?我的意思是爲什麼輸出不像100,55,127,

回答

3

Scanner#nextLong()不解析Long文字,它將數字解析爲長整型,所以它無法找到一個在3L並退出循環,即。 hasNextLong()返回false

注意的Javadoc

掃描輸入作爲一個長期的下一個標記。

在這種情況下,下一個標記爲3L,並且不解析爲Long。試試吧

Long.parseLong("3L"); 

會給你一個NumberFormatException

+0

謝謝,非常明確的答案。 – user2654250

1

直接來自javadoc api:如果使用nextLong方法,此掃描器輸入中的下一個標記可被解釋爲默認基數中的長整型值,則返回true。掃描儀不會超過任何輸入。

0

的問題是在3L 62D,嘗試修改您的輸入爲:

String context = "0100 55 127 3L 62D 6F (int)7"; 

比輸出將是:100,55,127個