1

Scanner.next("A")次のトークンが「A」に一致する場合は文字列「A」を返し、そうでない場合は and をスローしますInputMismatchExceptionInputMismatchExceptionしかし、私のコードは、文字列のグループから一致が見つからなかった場合にスローされるようにする必要があります。たとえばInputMismatchException、次のトークンが「A」でも「B」でも「C」でもない場合にスローされたいとします。

4

1 に答える 1

2

正規表現パターンでScanner.next(Pattern)を使用できます。

Pattern pattern = Pattern.compile("[ABC]");
myScanner.next(pattern);

あるいは

myScanner.next("[ABC]");

なぜなら、Javadoc によると、Scanner.next(String)

next(pattern) 形式のこのメソッドの呼び出しは、呼び出し next(Pattern.compile(pattern)) とまったく同じように動作します。

next(String)実装が Pattern オブジェクトのキャッシュを維持するため、 を使用するバージョンが毎回 Pattern オブジェクトを構築することを心配する必要さえありません。

編集:一致させたい文字列が単一の文字ではない場合、正規表現パターンは異なります:

myScanner.next("(AB|CD|EF)"); // throws for everything except AB, CD and EF.
于 2013-03-09T19:42:00.180 に答える