当我们将字符串传递给扫描仪时,我们得到 '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
提交
取消