【发布时间】:2013-11-06 17:42:51
【问题描述】:
根据 Java API Scanner 使用分隔符将整个输入分解为标记。我正在尝试理解标记和分隔符。我正在做这个程序并遇到了困惑
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner s = null;
try {
s = new Scanner(System.in);
s.useDelimiter("A");
System.out.println("1 " + s.next().length());
System.out.println("2 " + s.next().length());
System.out.println("3 " + s.next().length());
System.out.println("4 " + s.next().length());
} finally {
if (s != null) {
s.close();
}
}
}
}
当我使用输入 AAAAAasdf 时,我得到以下输出。
1 0
2 0
3 0
4 0
我可以理解这个输出,因为分隔符之间的标记长度为零,因此全部为零,但是当我使用默认分隔符并将输入作为
_____aaa\n -> 用空格替换下划线,\n 在 Eclipse 控制台中按回车键。
为此,我得到的输出为
1 3
我无法理解。我给了 5 个空格,所以它们之间应该有 4 个长度为 0 的标记。为什么不?我在这里错过了什么?
【问题讨论】:
-
我会假设扫描仪会跳过空格
-
@njzk2 它根据正则表达式模式工作。在评论中查看最受好评的答案和 API 参考。