當我們將字符串傳遞給掃描儀時,我們得到 'ab' 作為控制臺輸出,如下所示: public static void main(String []args){ Scanner sc = new Scanner("a///b"); sc.useDelimiter("/"); System.out.print(sc.next()); System.out.print(sc.next()); System.out.print(sc.next()); System.out.print(sc.next()); sc.close(); }但是如果我們將掃描線更改為Scanner sc = new Scanner(System.in);并傳入相同的字符串a///b控制臺僅輸出“a”??刂婆_期望輸入另一個 / 以輸出相同的值。為什么它們的工作方式不同?
1 回答

智慧大石
TA貢獻1946條經驗 獲得超3個贊
讀取字符時,aScanner上的AString已到達其輸入的末尾。'b'但是當你使用ScanneronSystem.in時,流還沒有結束;您仍然可以在換行符后輸入更多輸入。
如果您輸入a///b Enter,您仍然可以輸入另一個分隔符/,最終讓您Scanner知道令牌已完成。如果您輸入foo/,則下一個標記是"b\nfoo",說明Scanner知道這b只是下一個標記的開始,直到另一個標記/到達流中才完成。
在這里,我在所有輸出周圍放置了雙引號,以顯示找到的每個標記,即使是空的。
a///b <- input; token starting with "b" is unfinished
"a" <- output
"" <- output
"" <- output
foo/ <- input
"b <- output
foo" <- output
添加回答
舉報
0/150
提交
取消