public final class Scanner extends Object implements Iterator<String>, Closeable
Scanner
は、区切り文字のパターンを使用して入力をトークンに分割します。デフォルトでは区切り文字は空白文字です。結果として得られるトークンは、さまざまな next メソッドを使用して、異なる型の値に変換できます。
たとえば、次のコードを使用して、System.in から数値を読み込むことができます。
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
別の例として、次のコードを使用して、myNumbers
ファイル内のエントリから long
型を割り当てることができます。
Scanner sc = new Scanner(new File("myNumbers")); while (sc.hasNextLong()) { long aLong = sc.nextLong(); }
スキャナは、空白文字以外の区切り文字も使用できます。次の例では、文字列から複数の項目を読み取ります。
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close();
画面には次のように表示されます。
1 2 red blue
次のコードでも、同じ出力を生成できます。このコードでは、4 つのトークンを一度に構文解析する正規表現を使用します。
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input); s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"); MatchResult result = s.match(); for (int i=1; i<=result.groupCount(); i++) System.out.println(result.group(i)); s.close();
スキャナで使用されるデフォルトの空白区切り文字は、Character
.isWhitespace
により認識されます。reset()
メソッドは、スキャナの区切り文字が以前に変更されたかどうかにかかわらず、その値をデフォルトの空白区切り文字にリセットします。
スキャン操作により、入力の待機が妨げられる場合があります。
next()
および hasNext()
メソッドおよびそのプリミティブ型のコンパニオンメソッド (nextInt()
や hasNextInt()
など) は、最初に区切り文字パターンに一致する入力をすべてスキップし、次のトークンを返そうとします。hasNext および next メソッドはどちらも、ブロックを実行してさらに入力を待機することがあります。hasNext メソッドがブロックを実行するかどうかは、その関連する next メソッドがブロックを実行するどうかには関係ありません。
findInLine(java.lang.String)
、findWithinHorizon(java.lang.String, int)
、および skip(java.util.regex.Pattern)
メソッドは、区切り文字パターンとは無関係に動作します。これらのメソッドは、入力内の区切り文字とは無関係に指定されたパターンのマッチングを試みます。このため、区切り文字と無関係な特殊な環境で使用できます。これらのメソッドは、それ以上の入力の待機をブロックできます。
スキャナが InputMismatchException
をスローするとき、ほかのメソッドを使用して取得またはスキップできるように、スキャナは例外の原因となったトークンを渡しません。
区切り文字パターンのタイプに応じて、空のトークンが返されることがあります。たとえば、パターン "\\s+" は、複数の区切り文字インスタンスに一致するため、空ではないトークンを返します。区切り文字パターン "\\s" は、一度に 1 つの空白文字だけを渡すため、空のトークンを返します。
スキャナは、Readable
インタフェースを実装する任意のオブジェクトからテキストを読み取ることができます。基となる readable の Readable.read(java.nio.CharBuffer)
メソッドの呼び出しが IOException
をスローした場合、スキャナは入力の最後に達したと見なします。基となる readable によりスローされた最新の IOException は、ioException()
メソッドを使用して取得できます。
Scanner
が閉じられる場合、その入力ソースが Closeable
インタフェースを実装していると、そのソースも閉じられます。
Scanner
が、外部の同期化を行わずにマルチスレッドを使用するのは安全ではありません。
特に明記されていないかぎり、null
パラメータを Scanner
のいずれかのメソッドに渡すと、NullPointerException
がスローされます。
このクラスのインスタンスは、標準の書式に加え、スキャナのロケールの書式で数値をスキャンできます。スキャナの初期ロケールは、 ローカライズの書式は、次のパラメータで定義されます。特定のロケールの場合、これらはロケールの このクラスのインスタンスが数値として構文解析可能な文字列は、次の正規表現の文法に従って指定されます。ここで、Rmax は、使用中の基数の中で最大の数字です (たとえば、基数 10 の Rmax は 9)。
useRadix(int)
メソッドを使用して別の基数が設定されていない場合、スキャナは数値を 10 進数として解釈します。reset()
メソッドは、スキャナの基数が以前に変更されたかどうかにかかわらず、その値を 10
にリセットします。
ローカライズの数
Locale.getDefault()
メソッドにより返される値です。これは、useLocale(java.util.Locale)
メソッドを使用して変更できます。reset()
メソッドは、スキャナのロケールが以前に変更されたかどうかにかかわらず、その値を初期ロケールにリセットします。
DecimalFormat
オブジェクトである df、およびその DecimalFormatSymbols
オブジェクトである dfs から取得されます。
LocalGroupSeparator
1000 位の区切り文字。すなわち、dfs. getGroupingSeparator()
LocalDecimalSeparator
小数点に使用する文字。すなわち、dfs. getDecimalSeparator()
LocalPositivePrefix
正の数の前に表示する文字列 (空の場合もある)。すなわち、df. getPositivePrefix()
LocalPositiveSuffix
正の数のあとに表示する文字列 (空の場合もある)。すなわち、df. getPositiveSuffix()
LocalNegativePrefix
負の数の前に表示する文字列 (空の場合もある)。すなわち、df. getNegativePrefix()
LocalNegativeSuffix
負の数のあとに表示する文字列 (空の場合もある)。すなわち、df. getNegativeSuffix()
LocalNaN
浮動小数点値の非数を表す文字列。すなわち、dfs. getNaN()
LocalInfinity
浮動小数点値の無限大を表す文字列。すなわち、dfs. getInfinity()
Number syntax
NonASCIIDigit :: | = Character.isDigit (c) が true を返すような、非 ASCII 文字 c | ||||
Non0Digit :: | = [1-Rmax] | NonASCIIDigit | ||||
Digit :: | = [0-Rmax] | NonASCIIDigit | ||||
GroupedNumeral :: |
| ||||
Numeral :: | = ( ( Digit+ ) | GroupedNumeral ) | ||||
Integer :: | = ( [-+]? ( Numeral) ) | ||||
| LocalPositivePrefix NumeralLocalPositiveSuffix | |||||
| LocalNegativePrefix NumeralLocalNegativeSuffix | |||||
DecimalNumeral :: | = Numeral | ||||
| NumeralLocalDecimalSeparatorDigit* | |||||
| LocalDecimalSeparatorDigit+ | |||||
Exponent :: | = ( [eE] [+-]?Digit+ ) | ||||
Decimal :: | = ( [-+]? DecimalNumeralExponent? ) | ||||
| LocalPositivePrefixDecimalNumeralLocalPositiveSuffixExponent? | |||||
| LocalNegativePrefixDecimalNumeralLocalNegativeSuffixExponent? | |||||
HexFloat :: | = [-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)? | ||||
NonNumber :: | = NaN | LocalNan| Infinity | LocalInfinity | ||||
SignedNonNumber :: | = ( [-+]? NonNumber ) | ||||
| LocalPositivePrefixNonNumberLocalPositiveSuffix | |||||
| LocalNegativePrefixNonNumberLocalNegativeSuffix | |||||
Float :: | = Decimal | ||||
| HexFloat | |||||
| SignedNonNumber |
前述の正規表現では、空白文字は無視されます。
コンストラクタと説明 |
---|
Scanner(File source)
指定されたファイルからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(File source, String charsetName)
指定されたファイルからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(InputStream source)
指定された入力ストリームからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(InputStream source, String charsetName)
指定された入力ストリームからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(Path source)
指定されたファイルからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(Path source, String charsetName)
指定されたファイルからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(Readable source)
指定されたソースからスキャンされた値を生成する
Scanner を新しく構築します。 |
Scanner(ReadableByteChannel source)
指定されたチャネルからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(ReadableByteChannel source, String charsetName)
指定されたチャネルからスキャンされた値を生成する新しい
Scanner を構築します。 |
Scanner(String source)
指定された文字列からスキャンされた値を生成する
Scanner を新しく構築します。 |
修飾子と型 | メソッドと説明 |
---|---|
void |
close()
現在のスキャナをクローズします。
|
Pattern |
delimiter()
この
Scanner が区切り文字のマッチングに現在使用している Pattern を返します。 |
String |
findInLine(Pattern pattern)
区切り文字を無視して、次に現れる指定されたパターンの検索を試みます。
|
String |
findInLine(String pattern)
区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。
|
String |
findWithinHorizon(Pattern pattern, int horizon)
次に現れる指定されたパターンの検索を試みます。
|
String |
findWithinHorizon(String pattern, int horizon)
区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。
|
boolean |
hasNext()
このスキャナが入力内に別のトークンを保持する場合は true を返します。
|
boolean |
hasNext(Pattern pattern)
次の完全なトークンが指定されたパターンに一致する場合は true を返します。
|
boolean |
hasNext(String pattern)
次のトークンが、指定された文字列から構築されたパターンに一致する場合は true を返します。
|
boolean |
hasNextBigDecimal()
このスキャナの入力内の次のトークンが、
nextBigDecimal() メソッドを使って BigDecimal として解釈可能な場合に true を返します。 |
boolean |
hasNextBigInteger()
このスキャナの入力内の次のトークンが、
nextBigInteger() メソッドを使ってデフォルト基数の BigInteger として解釈可能な場合に true を返します。 |
boolean |
hasNextBigInteger(int radix)
このスキャナの入力内の次のトークンが、
nextBigInteger() メソッドを使って、指定された基数の BigInteger として解釈可能な場合に true を返します。 |
boolean |
hasNextBoolean()
文字列「true|false」から作成された大文字と小文字の区別されないパターンを使用して、スキャナの入力内の次のトークンを boolean 値として解釈可能であれば、true を返します。
|
boolean |
hasNextByte()
このスキャナの入力内の次のトークンが、
nextByte() メソッドを使ってデフォルト基数の byte 値として解釈可能な場合に true を返します。 |
boolean |
hasNextByte(int radix)
このスキャナの入力内の次のトークンが、
nextByte() メソッドを使って、指定された基数の byte 値として解釈可能な場合に true を返します。 |
boolean |
hasNextDouble()
このスキャナの入力内の次のトークンが、
nextDouble() メソッドを使って double 値として解釈可能な場合に true を返します。 |
boolean |
hasNextFloat()
このスキャナの入力内の次のトークンが、
nextFloat() メソッドを使って float 値として解釈可能な場合に true を返します。 |
boolean |
hasNextInt()
このスキャナの入力内の次のトークンが、
nextInt() メソッドを使ってデフォルト基数の int 値として解釈可能な場合に true を返します。 |
boolean |
hasNextInt(int radix)
このスキャナの入力内の次のトークンが、
nextInt() メソッドを使って、指定された基数の int 値として解釈可能な場合に true を返します。 |
boolean |
hasNextLine()
このスキャナの入力に別の行がある場合は true を返します。
|
boolean |
hasNextLong()
このスキャナの入力内の次のトークンが、
nextLong() メソッドを使ってデフォルト基数の long 値として解釈可能な場合に true を返します。 |
boolean |
hasNextLong(int radix)
このスキャナの入力内の次のトークンが、
nextLong() メソッドを使って、指定された基数の long 値として解釈可能な場合に true を返します。 |
boolean |
hasNextShort()
このスキャナの入力内の次のトークンが、
nextShort() メソッドを使ってデフォルト基数の short 値として解釈可能な場合に true を返します。 |
boolean |
hasNextShort(int radix)
このスキャナの入力内の次のトークンが、
nextShort() メソッドを使って、指定された基数の short 値として解釈可能な場合に true を返します。 |
IOException |
ioException()
この
Scanner の基となる Readable によって最後にスローされた IOException を返します。 |
Locale |
locale()
現在のスキャナのロケールを返します。
|
MatchResult |
match()
このスキャナが実行した最後のスキャン操作のマッチング結果を返します。
|
String |
next()
このスキャナから次の完全なトークンを検索して返します。
|
String |
next(Pattern pattern)
指定されたパターンに一致する次のトークンを返します。
|
String |
next(String pattern)
次のトークンが指定された文字列から構築されたパターンに一致する場合にのみ、それを返します。
|
BigDecimal |
nextBigDecimal()
入力の次のトークンを
BigDecimal としてスキャンします。 |
BigInteger |
nextBigInteger()
入力の次のトークンを
BigInteger としてスキャンします。 |
BigInteger |
nextBigInteger(int radix)
入力の次のトークンを
BigInteger としてスキャンします。 |
boolean |
nextBoolean()
入力の次のトークンを boolean 値としてスキャンして、その値を返します。
|
byte |
nextByte()
入力の次のトークンを byte としてスキャンします。
|
byte |
nextByte(int radix)
入力の次のトークンを byte としてスキャンします。
|
double |
nextDouble()
入力の次のトークンを double としてスキャンします。
|
float |
nextFloat()
入力の次のトークンを float としてスキャンします。
|
int |
nextInt()
入力の次のトークンを int としてスキャンします。
|
int |
nextInt(int radix)
入力の次のトークンを int としてスキャンします。
|
String |
nextLine()
スキャナを現在行の先に進めて、スキップした入力を返します。
|
long |
nextLong()
入力の次のトークンを long としてスキャンします。
|
long |
nextLong(int radix)
入力の次のトークンを long としてスキャンします。
|
short |
nextShort()
入力の次のトークンを short としてスキャンします。
|
short |
nextShort(int radix)
入力の次のトークンを short としてスキャンします。
|
int |
radix()
現在のスキャナのデフォルト基数を返します。
|
void |
remove()
remove オペレーションは、この
Iterator の実装によってサポートされていません。 |
Scanner |
reset()
現在のスキャナをリセットします。
|
Scanner |
skip(Pattern pattern)
指定されたパターンに一致する入力を、区切り文字を無視してスキップします。
|
Scanner |
skip(String pattern)
指定された文字列で構築されたパターンに一致する入力をスキップします。
|
String |
toString()
この
Scanner の文字列表現を返します。 |
Scanner |
useDelimiter(Pattern pattern)
このスキャナの区切り文字パターンを、指定されたパターンに設定します。
|
Scanner |
useDelimiter(String pattern)
このスキャナの区切り文字パターンを、指定された
String から作成されたパターンに設定します。 |
Scanner |
useLocale(Locale locale)
スキャナのロケールを指定されたロケールに設定します。
|
Scanner |
useRadix(int radix)
スキャナのデフォルト基数を指定された基数に設定します。
|
public Scanner(Readable source)
Scanner
を新しく構築します。source
- Readable
インタフェースを実装する文字ソースpublic Scanner(InputStream source)
Scanner
を構築します。ストリームから取得したバイトは、基になるプラットフォームのデフォルト文字セットを使用して文字に変換されます。source
- スキャン対象の入力ストリームpublic Scanner(InputStream source, String charsetName)
Scanner
を構築します。ストリームからのバイトは、指定された文字セットを使用して文字に変換されます。source
- スキャン対象の入力ストリームcharsetName
- ストリームから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型IllegalArgumentException
- 指定された文字セットが存在しない場合public Scanner(File source) throws FileNotFoundException
Scanner
を構築します。ファイルから取得したバイトは、基になるプラットフォームのデフォルト文字セットを使用して文字に変換されます。source
- スキャン対象のファイルFileNotFoundException
- ソースが見つからない場合public Scanner(File source, String charsetName) throws FileNotFoundException
Scanner
を構築します。ファイルから取得したバイトは、指定された文字セットを使用して文字に変換されます。source
- スキャン対象のファイルcharsetName
- ファイルから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型FileNotFoundException
- ソースが見つからない場合IllegalArgumentException
- 指定されたエンコーディングが見つからない場合public Scanner(Path source) throws IOException
Scanner
を構築します。ファイルから取得したバイトは、基になるプラットフォームのデフォルト文字セットを使用して文字に変換されます。source
- スキャン対象のファイルへのパスIOException
- ソースを開いているときに入出力エラーが発生した場合public Scanner(Path source, String charsetName) throws IOException
Scanner
を構築します。ファイルから取得したバイトは、指定された文字セットを使用して文字に変換されます。source
- スキャン対象のファイルへのパスcharsetName
- ファイルから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型IOException
- ソースを開いているときに入出力エラーが発生した場合IllegalArgumentException
- 指定されたエンコーディングが見つからない場合public Scanner(String source)
Scanner
を新しく構築します。source
- スキャンする文字列public Scanner(ReadableByteChannel source)
Scanner
を構築します。ソースから取得したバイトは、基になるプラットフォームのデフォルト文字セットを使用して文字に変換されます。source
- スキャンするチャネルpublic Scanner(ReadableByteChannel source, String charsetName)
Scanner
を構築します。ソースから取得したバイトは、指定された文字セットを使用して文字に変換されます。source
- スキャンするチャネルcharsetName
- チャネルから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型IllegalArgumentException
- 指定された文字セットが存在しない場合public void close()
このスキャナがまだ閉じておらず、基になるreadable が Closeable
インタフェースも実装する場合、readable の close メソッドが呼び出されます。このスキャナがすでに閉じられている場合、このメソッドを呼び出しても何も起こりません。
スキャナがクローズしたあとで検索操作の実行を試みると、IllegalStateException
がスローされます。
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
public IOException ioException()
Scanner
の基となる Readable
によって最後にスローされた IOException
を返します。そのような例外が存在しない場合、このメソッドは null
を返します。public Pattern delimiter()
Scanner
が区切り文字のマッチングに現在使用している Pattern
を返します。public Scanner useDelimiter(Pattern pattern)
pattern
- 区切り文字パターンpublic Scanner useDelimiter(String pattern)
String
から作成されたパターンに設定します。
このメソッドを useDelimiter(pattern) の形式で呼び出した場合、useDelimiter(Pattern.compile(pattern)) の呼び出しと同じ結果が得られます。
pattern
- 区切り文字パターンを指定する文字列public Locale locale()
スキャナのロケールは、デフォルトのプリミティブ一致正規表現の多数の要素に影響を及ぼします。前述の「ローカライズの数」を参照してください。
public Scanner useLocale(Locale locale)
スキャナのロケールは、デフォルトのプリミティブ一致正規表現の多数の要素に影響を及ぼします。前述の「ローカライズの数」を参照してください。
locale
- 使用するロケールを指定する文字列public int radix()
スキャナの基数は、デフォルトの数値一致正規表現の多数の要素に影響を及ぼします。前述の「ローカライズの数」を参照してください。
public Scanner useRadix(int radix)
スキャナの基数は、デフォルトの数値一致正規表現の多数の要素に影響を及ぼします。前述の「ローカライズの数」を参照してください。
基数が Character.MIN_RADIX
より小さいか、Character.MAX_RADIX
より大きい場合、IllegalArgumentException
がスローされます。
reset()
メソッドを呼び出すと、スキャナの基数が 10
に設定されます。
radix
- 数値のスキャン時に使用する基数IllegalArgumentException
- 基数が範囲外にある場合public MatchResult match()
IllegalStateException
をスローします。
Scanner
のさまざまな next
メソッドは、例外をスローせずに処理が完了すると、マッチング結果を使用可能にします。たとえば、int を返した nextInt()
メソッドの呼び出しのあとでは、このメソッドは、先に定義した Integer 正規表現の検索用の MatchResult
を返します。同様に、findInLine(java.lang.String)
、findWithinHorizon(java.lang.String, int)
、および skip(java.util.regex.Pattern)
メソッドは、処理に成功するとマッチング結果を使用可能にします。
IllegalStateException
- マッチング結果が使用可能ではない場合public String toString()
この Scanner
の文字列表現を返します。Scanner
の文字列表現には、デバッグに有用な情報が含まれます。厳密な書式は指定されません。
public boolean hasNext()
hasNext
、インタフェース: Iterator<String>
IllegalStateException
- このスキャナがクローズしている場合Iterator
public String next()
hasNext()
の呼び出しで true
が返された場合でも、入力のスキャンの待機中にブロックを実行する可能性があります。next
、インタフェース: Iterator<String>
NoSuchElementException
- 利用可能なトークンがこれ以上存在しない場合IllegalStateException
- このスキャナがクローズしている場合Iterator
public void remove()
Iterator
の実装によってサポートされていません。remove
、インタフェース: Iterator<String>
UnsupportedOperationException
- このメソッドが呼び出された場合。Iterator
public boolean hasNext(String pattern)
このメソッドを hasNext(pattern) の形式で呼び出した場合、hasNext(Pattern.compile(pattern)) の呼び出しと同じ結果が得られます。
pattern
- スキャンするパターンを指定する文字列IllegalStateException
- このスキャナがクローズしている場合public String next(String pattern)
このメソッドを next(pattern) の形式で呼び出した場合、next(Pattern.compile(pattern)) の呼び出しと同じ結果が得られます。
pattern
- スキャンするパターンを指定する文字列NoSuchElementException
- 指定されたトークンが利用できない場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNext(Pattern pattern)
pattern
- スキャンするパターンIllegalStateException
- このスキャナがクローズしている場合public String next(Pattern pattern)
hasNext(Pattern)
の呼び出しで true
が返された場合でも、入力のスキャンの待機中にブロックを実行する可能性があります。マッチングに成功すると、スキャナはパターンに一致した入力の先に進みます。pattern
- スキャンするパターンNoSuchElementException
- 利用可能なトークンがこれ以上存在しない場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextLine()
IllegalStateException
- このスキャナがクローズしている場合public String nextLine()
このメソッドは行区切り文字の検索を入力内で続行するため、行区切り文字が存在しない場合、スキップする行を検索する入力をすべてバッファーすることがあります。
NoSuchElementException
- 行が見つからなかった場合IllegalStateException
- このスキャナがクローズしている場合public String findInLine(String pattern)
このメソッドを findInLine(pattern) の形式で呼び出した場合、findInLine(Pattern.compile(pattern)) の呼び出しと同じ結果が得られます。
pattern
- 検索するパターンを指定する文字列IllegalStateException
- このスキャナがクローズしている場合public String findInLine(Pattern pattern)
null
が返され、スキャナの位置は変更されません。このメソッドは、パターンに一致する入力の待機をブロックする場合があります。
このメソッドは指定されたパターンの検索を入力内で続行するため、行区切り文字が存在しない場合、該当するトークンを検索する入力をすべてバッファーすることがあります。
pattern
- スキャンするパターンIllegalStateException
- このスキャナがクローズしている場合public String findWithinHorizon(String pattern, int horizon)
このメソッドを findWithinHorizon(pattern) の形式で呼び出した場合、findWithinHorizon(Pattern.compile(pattern, horizon)) の呼び出しと同じ結果が得られます。
pattern
- 検索するパターンを指定する文字列IllegalStateException
- このスキャナがクローズしている場合IllegalArgumentException
- horizon が負の値の場合public String findWithinHorizon(Pattern pattern, int horizon)
このメソッドは指定された検索 horizon まで区切り文字を無視して入力内で行区切り文字の検索を続行します。パターンが見つかった場合、スキャナは一致した入力の先に進み、パターンに一致した文字列を返します。該当するパターンが検出されない場合は、null が返され、スキャナの位置は変更されません。このメソッドは、パターンに一致する入力の待機をブロックする場合があります。
スキャナは、現在位置を超える horizon
コードポイント以上の検索を決して実行しません。マッチングは horizon によりクリップされる場合があります。つまり、horizon がより大きい場合、任意のマッチング結果が異なっている可能性があります。スキャナは、horizon を、透過的でアンカー指定がされていない境界として扱います (Matcher.useTransparentBounds(boolean)
および Matcher.useAnchoringBounds(boolean)
を参照)。
horizon が 0
の場合、horizon は無視され、このメソッドは入力内で指定されたパターンの検索を続行します。パターンの検索には制限がありません。また、パターンの検索中にすべての入力をバッファーできます。
horizon が負の場合は、IllegalArgumentException がスローされます。
pattern
- スキャンするパターンIllegalStateException
- このスキャナがクローズしている場合IllegalArgumentException
- horizon が負の値の場合public Scanner skip(Pattern pattern)
現在の位置で指定されたパターンへのマッチングが見つからない場合、入力はスキップされず、NoSuchElementException がスローされます。
このメソッドは、指定されたパターンへのマッチングをスキャナの現在位置から検索するため、「*」のように多数の入力に一致する可能性のあるパターンを指定すると、スキャナが大量の入力をバッファーする場合があります。
sc.skip("[ \t]*")
のように、何にも一致しないパターンを使用することで、NoSuchElementException
がスローされる危険を冒すことなくスキップすることが可能です。
pattern
- スキップするパターンを指定する文字列NoSuchElementException
- 指定されたパターンが見つからない場合IllegalStateException
- このスキャナがクローズしている場合public Scanner skip(String pattern)
このメソッドを skip(pattern) の形式で呼び出した場合、skip(Pattern.compile(pattern)) の呼び出しと同じ結果が得られます。
pattern
- スキップするパターンを指定する文字列IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextBoolean()
IllegalStateException
- このスキャナがクローズしている場合public boolean nextBoolean()
InputMismatchException
をスローします。マッチングに成功すると、スキャナは一致した入力の先に進みます。InputMismatchException
- 次のトークンが有効な boolean 値ではない場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextByte()
nextByte()
メソッドを使ってデフォルト基数の byte 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextByte(int radix)
nextByte()
メソッドを使って、指定された基数の byte 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合radix
- トークンを byte 値として解釈するために使用する基数IllegalStateException
- このスキャナがクローズしている場合public byte nextByte()
このメソッドを nextByte() の形式で呼び出した場合、nextByte(radix) の呼び出しと同じ結果が得られます。ここで、radix
はこのスキャナのデフォルト基数です。
InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public byte nextByte(int radix)
InputMismatchException
をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。
次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが byte 値に変換されます。次に、Character.digit
を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が前に付けられ、結果として得られる文字列が指定された基数を使用して Byte.parseByte
に渡されます。
radix
- トークンを byte 値として解釈するために使用する基数InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextShort()
nextShort()
メソッドを使ってデフォルト基数の short 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextShort(int radix)
nextShort()
メソッドを使って、指定された基数の short 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合radix
- トークンを short 値として解釈するために使用する基数IllegalStateException
- このスキャナがクローズしている場合public short nextShort()
このメソッドを nextShort() の形式で呼び出した場合、nextShort(radix) の呼び出しと同じ結果が得られます。ここで、radix
はこのスキャナのデフォルト基数です。
InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public short nextShort(int radix)
InputMismatchException
をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。
次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが short 値に変換されます。次に、Character.digit
を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が前に付けられ、結果として得られる文字列が指定された基数を使用して Short.parseShort
に渡されます。
radix
- トークンを short 値として解釈するために使用する基数InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextInt()
nextInt()
メソッドを使ってデフォルト基数の int 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextInt(int radix)
nextInt()
メソッドを使って、指定された基数の int 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合radix
- トークンを int 値として解釈するために使用する基数IllegalStateException
- このスキャナがクローズしている場合public int nextInt()
このメソッドを nextInt() の形式で呼び出した場合、nextInt(radix) の呼び出しと同じ結果が得られます。ここで、radix
はこのスキャナのデフォルト基数です。
InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public int nextInt(int radix)
InputMismatchException
をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。
次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが int 値に変換されます。次に、Character.digit
を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が前に付けられ、結果として得られる文字列が指定された基数を使用して Integer.parseInt
に渡されます。
radix
- トークンを int 値として解釈するために使用する基数InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextLong()
nextLong()
メソッドを使ってデフォルト基数の long 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextLong(int radix)
nextLong()
メソッドを使って、指定された基数の long 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合radix
- トークンを long 値として解釈するために使用する基数IllegalStateException
- このスキャナがクローズしている場合public long nextLong()
このメソッドを nextLong() の形式で呼び出した場合、nextLong(radix) の呼び出しと同じ結果が得られます。ここで、radix
はこのスキャナのデフォルト基数です。
InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public long nextLong(int radix)
InputMismatchException
をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。
次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが long 値に変換されます。次に、Character.digit
を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が前に付けられ、結果として得られる文字列が指定された基数を使用して Long.parseLong
に渡されます。
radix
- トークンを int 値として解釈するために使用する基数InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextFloat()
nextFloat()
メソッドを使って float 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合IllegalStateException
- このスキャナがクローズしている場合public float nextFloat()
InputMismatchException
をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。
次のトークンが前述の Float 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが float 値に変換されます。次に、Character.digit
を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が前に付けられ、結果として得られる文字列が指定された基数を使用して Float.parseFloat
に渡されます。トークンがローカライズされた NaN または無限大の文字列に一致すると、「NaN」または「Infinity」が適宜 Float.parseFloat
に渡されます。
InputMismatchException
- 次のトークンが Float 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextDouble()
nextDouble()
メソッドを使って double 値として解釈可能な場合に true を返します。このスキャナがクローズしている場合IllegalStateException
- このスキャナがクローズしている場合public double nextDouble()
InputMismatchException
をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。
次のトークンが前述の Float 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが double 値に変換されます。次に、Character.digit
を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が前に付けられ、結果として得られる文字列が指定された基数を使用して Double.parseDouble
に渡されます。トークンがローカライズされた NaN または無限大の文字列に一致すると、「NaN」または「Infinity」が適宜 Double.parseDouble
に渡されます。
InputMismatchException
- 次のトークンが Float 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextBigInteger()
nextBigInteger()
メソッドを使ってデフォルト基数の BigInteger
として解釈可能な場合に true を返します。このスキャナがクローズしている場合BigInteger
である場合にのみ、trueIllegalStateException
- このスキャナがクローズしている場合public boolean hasNextBigInteger(int radix)
nextBigInteger()
メソッドを使って、指定された基数の BigInteger
として解釈可能な場合に true を返します。このスキャナがクローズしている場合radix
- トークンを整数として解釈するために使用する基数BigInteger
である場合にのみ、trueIllegalStateException
- このスキャナがクローズしている場合public BigInteger nextBigInteger()
BigInteger
としてスキャンします。
このメソッドを nextBigInteger() の形式で呼び出した場合、nextBigInteger(radix) の呼び出しと同じ結果が得られます。ここで、radix
はこのスキャナのデフォルト基数です。
InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public BigInteger nextBigInteger(int radix)
BigInteger
としてスキャンします。
次のトークンが前述の Integer 正規表現に一致すると、すべてのグループ区切り文字を削除し、Character.digit
を使用して非 ASCII 数字を ASCII 数字にマッピングし、指定された基数を使用して結果として得られる文字列を BigInteger(String, int)
コンストラクタに渡すかのように、トークンが BigInteger 値に変換されます。
radix
- トークンの解釈に使用する基数InputMismatchException
- 次のトークンが Integer 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public boolean hasNextBigDecimal()
nextBigDecimal()
メソッドを使って BigDecimal
として解釈可能な場合に true を返します。このスキャナがクローズしている場合BigDecimal
である場合にのみ、trueIllegalStateException
- このスキャナがクローズしている場合public BigDecimal nextBigDecimal()
BigDecimal
としてスキャンします。
次のトークンが前述の Decimal 正規表現に一致すると、すべてのグループ区切り文字を削除し、Character.digit
を使用して非 ASCII 数字を ASCII 数字にマッピングし、結果として得られる文字列を BigDecimal(String)
コンストラクタに渡すかのように、トークンが BigDecimal 値に変換されます。
InputMismatchException
- 次のトークンが Decimal 正規表現に一致しないか範囲外である場合NoSuchElementException
- スキャンする入力がなくなった場合IllegalStateException
- このスキャナがクローズしている場合public Scanner reset()
スキャナをリセットすると、useDelimiter(java.util.regex.Pattern)
、useLocale(java.util.Locale)
、または useRadix(int)
の呼び出しによって変更された可能性のある、すべての明示的な状態情報が破棄されます。
このメソッドを scanner.reset() の形式で呼び出した場合、次の呼び出しと同じ結果が得られます
scanner.useDelimiter("\\p{javaWhitespace}+") .useLocale(Locale.getDefault()) .useRadix(10);
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.