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
\\d+x\\d+1x1

4

1 に答える 1

5

ドキュメントには次のように記載されています。

Scanner は、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。結果のトークンは、さまざまな next メソッドを使用して、さまざまな型の値に変換できます。

また、次のようにも述べています。

public String next(パターンパターン)

指定されたパターンに一致する場合、次のトークンを返します。

したがって、コードは次の空白まで文字を読み取り、パターンに一致する場合はそれらを返します。パターンは空白を含む文字列に一致し、トークンには空白を含めることができないため、これは当てはまりません。

于 2013-03-02T14:31:17.577 に答える