JavaTM Platform
Standard Ed. 6

java.util
クラス Scanner

java.lang.Object
  上位を拡張 java.util.Scanner
すべての実装されたインタフェース:
Iterator<String>

public final class Scanner
extends Object
implements Iterator<String>

正規表現を使用してプリミティブ型および文字列の構文解析が可能な、単純なテキストスキャナです。

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 がスローされます。

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

このクラスのインスタンスが数値として構文解析可能な文字列は、次の正規表現の文法に従って指定されます。 ここで、Rmax は、使用中の基数の中で最大の数字です (たとえば、基数 10 の Rmax は 9)。

NonASCIIDigit  :: = Character.isDigit(c) が true を返すような、非 ASCII 文字 c
 
Non0Digit  :: = [1-Rmax] | NonASCIIDigit
 
Digit  :: = [0-Rmax] | NonASCIIDigit
 
GroupedNumeral  ::
= (  Non0DigitDigit?Digit?
LocalGroupSeparatorDigitDigitDigit )+ )
 
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

前述の正規表現では、空白文字は無視されます。

導入されたバージョン:
1.5

コンストラクタの概要
Scanner(File source)
          指定されたファイルからスキャンされた値を生成する Scanner を新しく作成します。
Scanner(File source, String charsetName)
          指定されたファイルからスキャンされた値を生成する Scanner を新しく作成します。
Scanner(InputStream source)
          指定された入力ストリームからスキャンされた値を生成する Scanner を新しく作成します。
Scanner(InputStream 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)
          トークンを整数として解釈するために使用する基数 このスキャナの次のトークンが有効な 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()
          このスキャナの次のトークンが有効な int 値である場合にのみ、true このスキャナの次のトークンが有効な int 値である場合にのみ、trueこのスキャナがクローズしている場合
 boolean hasNextInt(int radix)
          このスキャナの入力内の次のトークンが、nextInt() メソッドを使って指定された基数の int 値として解釈可能な場合に、true を返します。
 boolean hasNextLine()
          このスキャナの入力に別の行がある場合は true を返します。
 boolean hasNextLong()
          このスキャナの次のトークンが有効な long 値である場合にのみ、trueこのスキャナがクローズしている場合
 boolean hasNextLong(int radix)
          このスキャナの入力内の次のトークンが、nextLong() メソッドを使って指定された基数の long 値として解釈可能な場合に、true を返します。
 boolean hasNextShort()
          このスキャナの次のトークンがデフォルト基数に基づく有効な 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()
          Iterator の実装が remove オペレーションをサポートしない場合
 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)
          スキャナのデフォルト基数を指定された基数に設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

Scanner

public Scanner(Readable source)
指定されたソースからスキャンされた値を生成する Scanner を新しく作成します。

パラメータ:
source - Readable インタフェースを実装する文字ソース

Scanner

public Scanner(InputStream source)
指定された入力ストリームからスキャンされた値を生成する Scanner を新しく作成します。ストリームから取得したバイトは、基になるプラットフォームの デフォルト文字セット を使用して文字に変換されます。

パラメータ:
source - スキャン対象の入力ストリーム

Scanner

public Scanner(InputStream source,
               String charsetName)
指定された入力ストリームからスキャンされた値を生成する Scanner を新しく作成します。ストリームからのバイトは、指定された文字セットを使用して文字に変換されます。

パラメータ:
source - スキャン対象の入力ストリーム
charsetName - ストリームからのバイトをスキャン対象の文字に変換するために使用されるエンコーディングタイプ
例外:
IllegalArgumentException - 指定された文字セットが存在しない場合

Scanner

public Scanner(File source)
        throws FileNotFoundException
指定されたファイルからスキャンされた値を生成する Scanner を新しく作成します。ファイルから取得したバイトは、基になるプラットフォームの デフォルト文字セット を使用して文字に変換されます。

パラメータ:
source - スキャン対象のファイル
例外:
FileNotFoundException - ソースが見つからない場合

Scanner

public Scanner(File source,
               String charsetName)
        throws FileNotFoundException
指定されたファイルからスキャンされた値を生成する Scanner を新しく作成します。ファイルから取得したバイトは、指定された文字セットを使用して文字に変換されます。

パラメータ:
source - スキャン対象のファイル
charsetName - ファイルから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型
例外:
FileNotFoundException - ソースが見つからない場合
IllegalArgumentException - 指定されたエンコーディングが見つからない場合

Scanner

public Scanner(String source)
指定された文字列からスキャンされた値を生成する Scanner を新しく作成します。

パラメータ:
source - スキャンする文字列

Scanner

public Scanner(ReadableByteChannel source)
指定されたチャネルからスキャンされた値を生成する Scanner を新しく作成します。ソースから取得したバイトは、基になるプラットフォームのデフォルト文字セットを使用して文字に変換されます。

パラメータ:
source - スキャンするチャネル

Scanner

public Scanner(ReadableByteChannel source,
               String charsetName)
指定されたチャネルからスキャンされた値を生成する Scanner を新しく作成します。ソースから取得したバイトは、指定された文字セットを使用して文字に変換されます。

パラメータ:
source - スキャンするチャネル
charsetName - チャネルから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型
例外:
IllegalArgumentException - 指定された文字セットが存在しない場合
メソッドの詳細

close

public void close()
現在のスキャナをクローズします。

このスキャナがまだ閉じておらず、基になる readableCloseable インタフェースも実装する場合、readable の close メソッドが呼び出されます。このスキャナがすでに閉じられている場合、このメソッドを呼び出しても何も起こりません。

スキャナがクローズしたあとで検索操作の実行を試みると、IllegalStateException がスローされます。


ioException

public IOException ioException()
この Scanner の基になる Readable が最後にスローした IOException を返します。この種の例外が存在しない場合、このメソッドは null を返します。

戻り値:
このスキャナの readable が最後にスローした例外

delimiter

public Pattern delimiter()
この Scanner が区切り文字のマッチングに現在使用している Pattern を返します。

戻り値:
このスキャナの区切り文字パターン

useDelimiter

public Scanner useDelimiter(Pattern pattern)
このスキャナの区切り文字パターンを、指定されたパターンに設定します。

パラメータ:
pattern - 区切り文字パターン
戻り値:
現在のスキャナ

useDelimiter

public Scanner useDelimiter(String pattern)
このスキャナの区切り文字パターンを、指定された String から作成されたパターンに設定します。

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

reset() メソッドを呼び出すと、スキャナの区切り文字がデフォルトに設定されます。

パラメータ:
pattern - 区切り文字パターンを指定する文字列
戻り値:
現在のスキャナ

locale

public Locale locale()
現在のスキャナのロケールを返します。

スキャナのロケールは、デフォルトのプリミティブ一致正規表現の多数の要素に影響を及ぼします。 前述の「ローカライズの数」を参照してください。

戻り値:
現在のスキャナのロケール

useLocale

public Scanner useLocale(Locale locale)
スキャナのロケールを指定されたロケールに設定します。

スキャナのロケールは、デフォルトのプリミティブ一致正規表現の多数の要素に影響を及ぼします。 前述の「ローカライズの数」を参照してください。

reset() メソッドを呼び出すと、スキャナのロケールが初期ロケールに設定されます。

パラメータ:
locale - 使用するロケールを指定する文字列
戻り値:
現在のスキャナ

radix

public int radix()
現在のスキャナのデフォルト基数を返します。

スキャナの基数は、デフォルトの数値一致正規表現の多数の要素に影響を及ぼします。 前述の「ローカライズの数」を参照してください。

戻り値:
現在のスキャナのデフォルト基数

useRadix

public Scanner useRadix(int radix)
スキャナのデフォルト基数を指定された基数に設定します。

スキャナの基数は、デフォルトの数値一致正規表現の多数の要素に影響を及ぼします。 前述の「ローカライズの数」を参照してください。

基数が Character.MIN_RADIX より小さいか、Character.MAX_RADIX より大きい場合、IllegalArgumentException がスローされます。

reset() メソッドを呼び出すと、スキャナの基数が 10 に設定されます。

パラメータ:
radix - 数値のスキャン時に使用する基数
戻り値:
現在のスキャナ
例外:
IllegalArgumentException - 基数が範囲外にある場合

match

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 - マッチング結果が使用可能ではない場合

toString

public String toString()

この Scanner の文字列表現を返します。Scanner の文字列表現には、デバッグに有用な情報が含まれます。厳密な書式は指定されません。

オーバーライド:
クラス Object 内の toString
戻り値:
このスキャナの文字列表現

hasNext

public boolean hasNext()
このスキャナが入力内に別のトークンを保持する場合は true を返します。このメソッドは、入力のスキャンの待機中にブロックを実行する可能性があります。このスキャナがクローズしている場合

定義:
インタフェース Iterator<String> 内の hasNext
戻り値:
このスキャナが別のトークンを保持する場合にのみ true
例外:
IllegalStateException - このスキャナがクローズしている場合
関連項目:
Iterator

next

public String next()
このスキャナから次の完全なトークンを検索して返します。完全なトークンの前後には、区切り文字パターンに一致する入力が配置されます。このメソッドは、前の hasNext() の呼び出しで true が返された場合でも、入力のスキャンの待機中にブロックを実行する可能性があります。

定義:
インタフェース Iterator<String> 内の next
戻り値:
次のトークン
例外:
NoSuchElementException - 利用可能なトークンがこれ以上存在しない場合
IllegalStateException - このスキャナがクローズしている場合
関連項目:
Iterator

remove

public void remove()
Iterator の実装が remove オペレーションをサポートしない場合

定義:
インタフェース Iterator<String> 内の remove
例外:
UnsupportedOperationException - このメソッドが呼び出された場合
関連項目:
Iterator

hasNext

public boolean hasNext(String pattern)
次のトークンが、指定された文字列から構築されたパターンに一致する場合は true を返します。このスキャナがクローズしている場合

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

パラメータ:
pattern - スキャンするパターンを指定する文字列
戻り値:
このスキャナが指定されたパターンに一致する別のトークンを保持する場合にのみ true
例外:
IllegalStateException - このスキャナがクローズしている場合

next

public String next(String pattern)
次のトークンが指定された文字列から構築されたパターンに一致する場合にのみ、それを返します。マッチングに成功すると、スキャナはパターンに一致した入力の先に進みます。

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

パラメータ:
pattern - スキャンするパターンを指定する文字列
戻り値:
次のトークン
例外:
NoSuchElementException - 指定されたトークンが利用できない場合
IllegalStateException - このスキャナがクローズしている場合

hasNext

public boolean hasNext(Pattern pattern)
次の完全なトークンが指定されたパターンに一致する場合は true を返します。完全なトークンの前後には、区切り文字パターンに一致する入力が配置されます。このメソッドは、入力の待機中にブロックを実行する可能性があります。このスキャナがクローズしている場合

パラメータ:
pattern - スキャンするパターン
戻り値:
このスキャナが指定されたパターンに一致する別のトークンを保持する場合にのみ true
例外:
IllegalStateException - このスキャナがクローズしている場合

next

public String next(Pattern pattern)
指定されたパターンに一致する次のトークンを返します。前の hasNext(Pattern) の呼び出しが true を返す場合でも、このメソッドは入力のスキャンの待機中にブロックを実行する可能性があります。マッチングに成功すると、スキャナはパターンに一致した入力の先に進みます。

パラメータ:
pattern - スキャンするパターン
戻り値:
次のトークン
例外:
NoSuchElementException - 利用可能なトークンがこれ以上存在しない場合
IllegalStateException - このスキャナがクローズしている場合

hasNextLine

public boolean hasNextLine()
このスキャナの入力に別の行がある場合は true を返します。このメソッドは、入力の待機中にブロックを実行する可能性があります。このスキャナがクローズしている場合

戻り値:
このスキャナが別の入力行を保持する場合にのみ true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextLine

public String nextLine()
スキャナを現在行の先に進めて、スキップした入力を返します。 このメソッドは、最後の行区切り文字を除く、現在行の残りを返します。位置は、次の行の最初に設定されます。

このメソッドは行区切り文字の検索を入力内で続行するため、行区切り文字が存在しない場合、スキップする行を検索する入力をすべてバッファーすることがあります。

戻り値:
スキップされた行
例外:
NoSuchElementException - 行が見つからなかった場合
IllegalStateException - このスキャナがクローズしている場合

findInLine

public String findInLine(String pattern)
区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。

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

パラメータ:
pattern - 検索するパターンを指定する文字列
戻り値:
指定されたパターンに一致したテキスト
例外:
IllegalStateException - このスキャナがクローズしている場合

findInLine

public String findInLine(Pattern pattern)
区切り文字を無視して、次に現れる指定されたパターンの検索を試みます。次の行区切り文字より前にパターンが見つかった場合、スキャナは一致した入力の先に進み、パターンに一致した文字列を返します。次の行区切り文字よりも前に該当するパターンが見つからなかった場合は、null が返され、スキャナの位置は変更されません。このメソッドは、パターンに一致する入力の待機をブロックする場合があります。

このメソッドは指定されたパターンの検索を入力内で続行するため、行区切り文字が存在しない場合、該当するトークンを検索する入力をすべてバッファーすることがあります。

パラメータ:
pattern - スキャンするパターン
戻り値:
指定されたパターンに一致したテキスト
例外:
IllegalStateException - このスキャナがクローズしている場合

findWithinHorizon

public String findWithinHorizon(String pattern,
                                int horizon)
区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。

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

パラメータ:
pattern - 検索するパターンを指定する文字列
戻り値:
指定されたパターンに一致したテキスト
例外:
IllegalStateException - このスキャナがクローズしている場合
IllegalArgumentException - horizon が負の値の場合

findWithinHorizon

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 が負の値の場合

skip

public Scanner skip(Pattern pattern)
指定されたパターンに一致する入力を、区切り文字を無視してスキップします。指定されたパターンの先頭一致が成功すると、このメソッドは入力をスキップします。

現在の位置で指定されたパターンへのマッチングが見つからない場合、入力はスキップされず、NoSuchElementException がスローされます。

このメソッドは、指定されたパターンへのマッチングをスキャナの現在位置から検索するため、「*」のように多数の入力に一致する可能性のあるパターンを指定すると、スキャナが大量の入力をバッファーする場合があります。

sc.skip("[ \t]*") のように、何にも一致しないパターンを使用することで、NoSuchElementException がスローされる危険を冒すことなくスキップすることが可能です。

パラメータ:
pattern - スキップするパターンを指定する文字列
戻り値:
現在のスキャナ
例外:
NoSuchElementException - 指定されたパターンが見つからない場合
IllegalStateException - このスキャナがクローズしている場合

skip

public Scanner skip(String pattern)
指定された文字列で構築されたパターンに一致する入力をスキップします。

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

パラメータ:
pattern - スキップするパターンを指定する文字列
戻り値:
現在のスキャナ
例外:
IllegalStateException - このスキャナがクローズしている場合

hasNextBoolean

public boolean hasNextBoolean()
文字列「true|false」から作成された大文字と小文字の区別されないパターンを使用して、スキャナの入力内の次のトークンを boolean 値として解釈可能であれば、true を返します。スキャナが一致した入力の先に進むことはありません。

戻り値:
このスキャナの次のトークンが有効な boolean 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextBoolean

public boolean nextBoolean()
入力の次のトークンを boolean 値としてスキャンして、その値を返します。次のトークンを有効な boolean 値に変換できない場合、このメソッドは InputMismatchException をスローします。マッチングに成功すると、スキャナは一致した入力の先に進みます。

戻り値:
入力からスキャンした boolean 値
例外:
InputMismatchException - 次のトークンが有効な boolean 値ではない場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextByte

public boolean hasNextByte()
このスキャナの入力内の次のトークンが、nextByte() メソッドを使ってデフォルトの基数の byte 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な byte 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

hasNextByte

public boolean hasNextByte(int radix)
このスキャナの入力内の次のトークンが、nextByte() メソッドを使って指定された基数の byte 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

パラメータ:
radix - トークンを byte 値として解釈するために使用する基数
戻り値:
このスキャナの次のトークンが有効な byte 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextByte

public byte nextByte()
入力の次のトークンを byte としてスキャンします。

nextByte() 形式のこの呼び出しは、nextByte(radix) の呼び出しと正確に同じ動作になります。 ここで、radix はこのスキャナのデフォルト基数です。

戻り値:
入力からスキャンした byte
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

nextByte

public byte nextByte(int radix)
入力の次のトークンを byte としてスキャンします。次に示す方法で、次のトークンを有効な byte 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。

次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが byte 値に変換されます。 次に、Character.digit を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が付けられ、結果として得られる文字列が指定された基数を使用して Byte.parseByte に渡されます。

パラメータ:
radix - トークンを byte 値として解釈するために使用する基数
戻り値:
入力からスキャンした byte
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextShort

public boolean hasNextShort()
このスキャナの次のトークンがデフォルト基数に基づく有効な short 値である場合にのみ、trueこのスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンがデフォルトの基数の有効な short 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

hasNextShort

public boolean hasNextShort(int radix)
このスキャナの入力内の次のトークンが、nextShort() メソッドを使って指定された基数の short 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

パラメータ:
radix - トークンを short 値として解釈するために使用する基数
戻り値:
このスキャナの次のトークンが指定された基数の有効な short 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextShort

public short nextShort()
入力の次のトークンを short としてスキャンします。

nextShort() 形式のこの呼び出しは、nextShort(radix) の呼び出しと正確に同じ動作になります。 ここで、radix はこのスキャナのデフォルト基数です。

戻り値:
入力からスキャンした short
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

nextShort

public short nextShort(int radix)
入力の次のトークンを short としてスキャンします。次に示す方法で、次のトークンを有効な short 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。

次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが short 値に変換されます。 次に、Character.digit を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が付けられ、結果として得られる文字列が指定された基数を使用して Short.parseShort に渡されます。

パラメータ:
radix - トークンを short 値として解釈するために使用する基数
戻り値:
入力からスキャンした short
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextInt

public boolean hasNextInt()
このスキャナの次のトークンが有効な int 値である場合にのみ、true このスキャナの次のトークンが有効な int 値である場合にのみ、trueこのスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な int 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

hasNextInt

public boolean hasNextInt(int radix)
このスキャナの入力内の次のトークンが、nextInt() メソッドを使って指定された基数の int 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

パラメータ:
radix - トークンを int 値として解釈するために使用する基数
戻り値:
このスキャナの次のトークンが有効な int 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextInt

public int nextInt()
入力の次のトークンを int としてスキャンします。

nextInt() 形式のこの呼び出しは、nextInt(radix) の呼び出しと正確に同じ動作になります。 ここで、radix はこのスキャナのデフォルト基数です。

戻り値:
入力からスキャンした int
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

nextInt

public int nextInt(int radix)
入力の次のトークンを int としてスキャンします。次に示す方法で、次のトークンを有効な int 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。

次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが int 値に変換されます。 次に、Character.digit を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が付けられ、結果として得られる文字列が指定された基数を使用して Integer.parseInt に渡されます。

パラメータ:
radix - トークンを int 値として解釈するために使用する基数
戻り値:
入力からスキャンした int
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextLong

public boolean hasNextLong()
このスキャナの次のトークンが有効な long 値である場合にのみ、trueこのスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な long 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

hasNextLong

public boolean hasNextLong(int radix)
このスキャナの入力内の次のトークンが、nextLong() メソッドを使って指定された基数の long 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

パラメータ:
radix - トークンを long 値として解釈するために使用する基数
戻り値:
このスキャナの次のトークンが有効な long 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextLong

public long nextLong()
入力の次のトークンを long としてスキャンします。

nextLong() 形式のこの呼び出しは、nextLong(radix) の呼び出しと正確に同じ動作になります。 ここで、radix はこのスキャナのデフォルト基数です。

戻り値:
入力からスキャンした long
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

nextLong

public long nextLong(int radix)
入力の次のトークンを long としてスキャンします。次に示す方法で、次のトークンを有効な long 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。

次のトークンが前述の Integer 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが long 値に変換されます。 次に、Character.digit を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が付けられ、結果として得られる文字列が指定された基数を使用して Long.parseLong に渡されます。

パラメータ:
radix - トークンを int 値として解釈するために使用する基数
戻り値:
入力からスキャンした long
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextFloat

public boolean hasNextFloat()
このスキャナの入力内の次のトークンが、nextFloat() メソッドを使って float 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な float 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextFloat

public float nextFloat()
入力の次のトークンを float としてスキャンします。次に示す方法で、次のトークンを有効な float 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。

次のトークンが前述の Float 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが float 値に変換されます。 次に、Character.digit を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が付けられ、結果として得られる文字列が指定された基数を使用して Float.parseFloat に渡されます。トークンがローカライズされた NaN または無限大の文字列に一致すると、「NaN」または「Infinity」が適宜 Float.parseFloat に渡されます。

戻り値:
入力からスキャンした float
例外:
InputMismatchException - 次のトークンが Float 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextDouble

public boolean hasNextDouble()
このスキャナの入力内の次のトークンが、nextDouble() メソッドを使って double 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な double 値である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextDouble

public double nextDouble()
入力の次のトークンを double としてスキャンします。次に示す方法で、次のトークンを有効な double 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換に成功すると、スキャナは一致した入力の先に進みます。

次のトークンが前述の Float 正規表現に一致すると、ロケール固有の接頭辞、グループ区切り文字、およびロケール固有の接尾辞すべてを削除するかのようにしてトークンが double 値に変換されます。 次に、Character.digit を使用して非 ASCII 数字が ASCII 数字にマッピングされ、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号 (-) が付けられ、結果として得られる文字列が指定された基数を使用して Double.parseDouble に渡されます。トークンがローカライズされた NaN または無限大の文字列に一致すると、「NaN」または「Infinity」が適宜 Double.parseDouble に渡されます。

戻り値:
入力からスキャンした double
例外:
InputMismatchException - 次のトークンが Float 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextBigInteger

public boolean hasNextBigInteger()
このスキャナの入力内の次のトークンが、nextBigInteger() メソッドを使ってデフォルトの基数の BigInteger 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な BigInteger である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

hasNextBigInteger

public boolean hasNextBigInteger(int radix)
トークンを整数として解釈するために使用する基数 このスキャナの次のトークンが有効な BigInteger である場合にのみ、trueこのスキャナがクローズしている場合

パラメータ:
radix - トークンを整数として解釈するために使用する基数
戻り値:
このスキャナの次のトークンが有効な BigInteger である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextBigInteger

public BigInteger nextBigInteger()
入力の次のトークンを BigInteger としてスキャンします。

nextBigInteger() 形式のこの呼び出しは、nextBigInteger(radix) の呼び出しと正確に同じ動作になります。 ここで、radix はこのスキャナのデフォルト基数です。

戻り値:
入力からスキャンした BigInteger
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

nextBigInteger

public BigInteger nextBigInteger(int radix)
入力の次のトークンを BigInteger としてスキャンします。

次のトークンが前述の Integer 正規表現に一致すると、すべてのグループ区切り文字を削除し、Character.digit を使用して非 ASCII 数字を ASCII 数字にマッピングし、指定された基数を使用して結果として得られる文字列を BigInteger(String, int) コンストラクタに渡すかのように、トークンが BigInteger 値に変換されます。

パラメータ:
radix - トークンの解釈に使用する基数
戻り値:
入力からスキャンした BigInteger
例外:
InputMismatchException - 次のトークンが Integer 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

hasNextBigDecimal

public boolean hasNextBigDecimal()
このスキャナの入力内の次のトークンが、nextBigDecimal() メソッドを使って BigDecimal 値として解釈可能な場合に、true を返します。このスキャナがクローズしている場合

戻り値:
このスキャナの次のトークンが有効な BigDecimal である場合にのみ、true
例外:
IllegalStateException - このスキャナがクローズしている場合

nextBigDecimal

public BigDecimal nextBigDecimal()
入力の次のトークンを BigDecimal としてスキャンします。

次のトークンが前述の Decimal 正規表現に一致すると、すべてのグループ区切り文字を削除し、Character.digit を使用して非 ASCII 数字を ASCII 数字にマッピングし、結果として得られる文字列を BigDecimal(String) コンストラクタに渡すかのように、トークンが BigDecimal 値に変換されます。

戻り値:
入力からスキャンした BigDecimal
例外:
InputMismatchException - 次のトークンが Decimal 正規表現に一致しないか範囲外である場合
NoSuchElementException - スキャンする入力がなくなった場合
IllegalStateException - このスキャナがクローズしている場合

reset

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);
 

戻り値:
現在のスキャナ
導入されたバージョン:
1.6

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。