簡體   English   中英

java.util.Scanner> useDelimiter()與hasNextInt()之前和nextInt()之后的組合

[英]java.util.Scanner > useDelimiter() in combination with hasNextInt() before and nextInt() after

我正在學習Java並偶然發現了一些我不理解的東西。 也許有人可以解釋為什么這個代碼

Scanner sc = new Scanner("78438");
sc.hasNextInt();
sc.useDelimiter("4");
System.out.println(sc.nextInt());

有這個輸出:78438

我希望它就像這個輸出

Scanner sc = new Scanner("78438");
sc.useDelimiter("4");
System.out.println(sc.nextInt());

或這個

Scanner sc = new Scanner("78438");
sc.hasNextInt();
sc.useDelimiter("4");
sc.hasNextInt();
System.out.println(sc.nextInt());

或者這個代碼

Scanner sc = new Scanner("78438");
sc.useDelimiter("4");
sc.hasNextInt();
System.out.println(sc.nextInt());

這是:78

為什么,我錯過了什么? 我認為hasNextXXX()方法不應該對掃描儀的狀態產生任何影響......

hasNextInt方法和其他hasNext Scanner變種緩存下一個標記,因此當你在hasNextInt之后調用nextInt時,它會返回緩存的結果。 您可以在此處查看 Scanner的代碼: http//grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/Scanner.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM