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