亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Scanner useDelimiter 意外結果

Java Scanner useDelimiter 意外結果

肥皂起泡泡 2022-10-20 15:11:46
當我們將字符串傳遞給掃描儀時,我們得到 '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


查看完整回答
反對 回復 2022-10-20
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號