3

我正在尝试使用 aScanner和 a从输入中读取指定的文件格式Pattern,如下所示:

Pattern p = Pattern.compile("\\d+\\sx\\s\\d+");
Scanner sc = new Scanner(System.in);
String input = "";
try {
    input = sc.next(p);
} catch(NoSuchElementException ne) {
    System.out.println("No such token");
}
sc.close();
System.out.println(input);

但是当我1 x 1用作输入时,它会抛出NoSuchElementException
With the pattern being \\d+x\\d+and input 1x1it works,但不是模式中的空格,我做错了什么吗?

4

1 回答 1

5

文档说:

Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。然后可以使用各种 next 方法将生成的标记转换为不同类型的值。

它还说:

公共字符串下一个(模式模式)

如果它与指定的模式匹配,则返回下一个标记。

因此,您的代码会读取字符直到下一个空格,如果它们与您的模式匹配,则返回它们。情况并非如此,因为您的模式匹配包含空格的字符串,而令牌不能包含空格。

于 2013-03-02T14:31:17.577 回答