モジュール java.base
パッケージ java.util

クラスScanner

java.lang.Object
java.util.Scanner
すべての実装されたインタフェース:
Closeable, AutoCloseable, Iterator<String>

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()メソッドがブロックを実行するどうかには関係ありません。 tokens()メソッドは、入力の待機をブロックすることもあります。

findInLine()findWithinHorizon()skip()、およびfindAll()メソッドは、デリミタ・パターンとは独立して動作します。 これらのメソッドは、入力内の区切り文字とは無関係に指定されたパターンのマッチングを試みます。このため、区切り文字と無関係な特殊な環境で使用できます。 これらのメソッドは、それ以上の入力の待機をブロックできます。

スキャナがInputMismatchExceptionをスローするとき、ほかのメソッドを使用して取得またはスキップできるように、スキャナは例外の原因となったトークンを渡しません。

区切り文字パターンのタイプに応じて、空のトークンが返されることがあります。 たとえば、パターン"\\s+"は、複数の区切り文字インスタンスに一致するため、空ではないトークンを返します。 区切り文字パターン"\\s"は、一度に1つの空白文字だけを渡すため、空のトークンを返します。

スキャナは、Readableインタフェースを実装する任意のオブジェクトからテキストを読み取ることができます。 基礎となる読み込み可能なread()メソッドを呼び出すとIOExceptionがスローされた場合、スキャナは入力の終わりに達したとみなします。 基となるreadableによりスローされた最新のIOExceptionは、ioException()メソッドを使用して取得できます。

Scannerが閉じられる場合、その入力ソースがCloseableインタフェースを実装していると、そのソースも閉じられます。

Scannerが、外部の同期化を行わずにマルチ・スレッドを使用するのは安全ではありません。

特に明記されていないかぎり、nullパラメータをScannerのいずれかのメソッドに渡すと、NullPointerExceptionがスローされます。

useRadix(int)メソッドを使用して別の基数が設定されていない場合、スキャナは数値を10進数として解釈します。 reset()メソッドは、スキャナの基数の値を、以前に変更されたかどうかにかかわらず、10にリセットします。

ローカライズの数

このクラスのインスタンスは、標準の書式に加え、スキャナのロケールの書式で数値をスキャンできます。 スキャナ「初期ロケール」は、Locale.getDefault(Locale.Category.FORMAT)メソッドによって返される値です。useLocale()メソッドで変更することができます。 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()

数値の構文

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

NonAsciiDigit:
非ASCII文字c (Character.isDigit(c)がtrueを返す)
Non0Digit:
[1-Rmax] | NonASCIIDigit
Digit:
[0-Rmax] | NonASCIIDigit
GroupedNumeral:
Non0Digit Digit? Digit?
    LocalGroupSeparator Digit Digit Digit )+ )
Numeral:
( ( Digit+ ) | GroupedNumeral )
Integer:
( [-+]? ( 「数字」 ) )
| LocalPositivePrefix 「数字」 LocalPositiveSuffix
| LocalNegativePrefix 「数字」 LocalNegativeSuffix
DecimalNumeral:
数字
| Numeral LocalDecimalSeparator Digit*
| LocalDecimalSeparator Digit+
Exponent:
( [eE] [+-]? Digit+ )
Decimal:
( [-+]? DecimalNumeral Exponent? )
| LocalPositivePrefix DecimalNumeral LocalPositiveSuffix Exponent?
| LocalNegativePrefix DecimalNumeral LocalNegativeSuffix Exponent?
HexFloat:
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?
NonNumber:
NaN | LocalNan | Infinity | LocalInfinity
SignedNonNumber:
( [-+]? NonNumber )
| LocalPositivePrefix NonNumber LocalPositiveSuffix
| LocalNegativePrefix NonNumber LocalNegativeSuffix
Float:
Decimal | HexFloat | SignedNonNumber

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

導入されたバージョン:
1.5
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    Scanner(File source)
    指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(File source, String charsetName)
    指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(File source, Charset charset)
    指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。
    指定された入力ストリームからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(InputStream source, String charsetName)
    指定された入力ストリームからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(InputStream source, Charset charset)
    指定された入力ストリームからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(Readable source)
    指定されたソースからスキャンされた値を生成するScannerを新しく構築します。
    Scanner(String source)
    指定された文字列からスキャンされた値を生成するScannerを新しく構築します。
    指定されたチャネルからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(ReadableByteChannel source, String charsetName)
    指定されたチャネルからスキャンされた値を生成する新しいScannerを構築します。
    指定されたチャネルからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(Path source)
    指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(Path source, String charsetName)
    指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。
    Scanner(Path source, Charset charset)
    指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    現在のスキャナをクローズします。
    このScannerが区切り文字のマッチングに現在使用しているPatternを返します。
    findAll(String patString)
    提供されたパターン文字列と一致する一致結果のストリームを返します。
    findAll(Pattern pattern)
    このスキャナからの一致結果のストリームを返します。
    findInLine(String pattern)
    区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。
    区切り文字を無視して、次に現れる指定されたパターンの検索を試みます。
    findWithinHorizon(String pattern, int horizon)
    区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。
    findWithinHorizon(Pattern pattern, int horizon)
    次に現れる指定されたパターンの検索を試みます。
    boolean
    このスキャナが入力内に別のトークンを保持する場合はtrueを返します。
    boolean
    hasNext(String pattern)
    次のトークンが、指定された文字列から構築されたパターンに一致する場合はtrueを返します。
    boolean
    hasNext(Pattern pattern)
    次の完全なトークンが指定されたパターンに一致する場合はtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextBigDecimal()メソッドを使ってBigDecimalとして解釈可能な場合にtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextBigInteger()メソッドを使ってデフォルト基数のBigIntegerとして解釈可能な場合にtrueを返します。
    boolean
    hasNextBigInteger(int radix)
    このスキャナの入力内の次のトークンが、nextBigInteger()メソッドを使って、指定された基数のBigIntegerとして解釈可能な場合にtrueを返します。
    boolean
    文字列「true|false」から作成された大文字と小文字の区別されないパターンを使用して、スキャナの入力内の次のトークンをboolean値として解釈可能であれば、trueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextByte()メソッドを使ってデフォルト基数のbyte値として解釈可能な場合にtrueを返します。
    boolean
    hasNextByte(int radix)
    このスキャナの入力内の次のトークンが、nextByte()メソッドを使って、指定された基数のbyte値として解釈可能な場合にtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextDouble()メソッドを使ってdouble値として解釈可能な場合にtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextFloat()メソッドを使ってfloat値として解釈可能な場合にtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextInt()メソッドを使ってデフォルト基数のint値として解釈可能な場合にtrueを返します。
    boolean
    hasNextInt(int radix)
    このスキャナの入力内の次のトークンが、nextInt()メソッドを使って、指定された基数のint値として解釈可能な場合にtrueを返します。
    boolean
    このスキャナの入力に別の行がある場合はtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextLong()メソッドを使ってデフォルト基数のlong値として解釈可能な場合にtrueを返します。
    boolean
    hasNextLong(int radix)
    このスキャナの入力内の次のトークンが、nextLong()メソッドを使って、指定された基数のlong値として解釈可能な場合にtrueを返します。
    boolean
    このスキャナの入力内の次のトークンが、nextShort()メソッドを使ってデフォルト基数のshort値として解釈可能な場合にtrueを返します。
    boolean
    hasNextShort(int radix)
    このスキャナの入力内の次のトークンが、nextShort()メソッドを使って、指定された基数のshort値として解釈可能な場合にtrueを返します。
    このScannerの基となるReadableによって最後にスローされたIOExceptionを返します。
    現在のスキャナのロケールを返します。
    このスキャナが実行した最後のスキャン操作のマッチング結果を返します。
    このスキャナから次の完全なトークンを検索して返します。
    next(String pattern)
    次のトークンが指定された文字列から構築されたパターンに一致する場合にのみ、それを返します。
    next(Pattern pattern)
    指定されたパターンに一致する次のトークンを返します。
    入力の次のトークンをBigDecimalとしてスキャンします。
    入力の次のトークンをBigIntegerとしてスキャンします。
    nextBigInteger(int radix)
    入力の次のトークンをBigIntegerとしてスキャンします。
    boolean
    入力の次のトークンをboolean値としてスキャンして、その値を返します。
    byte
    入力の次のトークンをbyteとしてスキャンします。
    byte
    nextByte(int radix)
    入力の次のトークンをbyteとしてスキャンします。
    double
    入力の次のトークンをdoubleとしてスキャンします。
    float
    入力の次のトークンをfloatとしてスキャンします。
    int
    入力の次のトークンをintとしてスキャンします。
    int
    nextInt(int radix)
    入力の次のトークンをintとしてスキャンします。
    スキャナを現在行の先に進めて、スキップした入力を返します。
    long
    入力の次のトークンをlongとしてスキャンします。
    long
    nextLong(int radix)
    入力の次のトークンをlongとしてスキャンします。
    short
    入力の次のトークンをshortとしてスキャンします。
    short
    nextShort(int radix)
    入力の次のトークンをshortとしてスキャンします。
    int
    現在のスキャナのデフォルト基数を返します。
    void
    removeオペレーションは、このIteratorの実装によってサポートされていません。
    現在のスキャナをリセットします。
    skip(String pattern)
    指定された文字列で構築されたパターンに一致する入力をスキップします。
    skip(Pattern pattern)
    指定されたパターンに一致する入力を、区切り文字を無視してスキップします。
    このスキャナから区切り記号で区切られたトークンのストリームを返します。
    このScannerの文字列表現を返します。
    このスキャナの区切り文字パターンを、指定されたStringから作成されたパターンに設定します。
    このスキャナの区切り文字パターンを、指定されたパターンに設定します。
    useLocale(Locale locale)
    スキャナのロケールを指定されたロケールに設定します。
    useRadix(int radix)
    スキャナのデフォルト基数を指定された基数に設定します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    インタフェース java.util.Iteratorで宣言されたメソッド

    forEachRemaining
  • コンストラクタの詳細

    • 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(InputStream source, Charset charset)
      指定された入力ストリームからスキャンされた値を生成する新しいScannerを構築します。 ストリームからのバイトは、指定された文字セットを使用して文字に変換されます。
      パラメータ:
      source - スキャンされる入力ストリーム
      charset - バイトをファイルからスキャンする文字に変換するために使用される文字セット
      導入されたバージョン:
      10
    • 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(File source, Charset charset) throws IOException
      指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。 ファイルから取得したバイトは、指定された文字セットを使用して文字に変換されます。
      パラメータ:
      source - スキャン対象のファイル
      charset - バイトをファイルからスキャンする文字に変換するために使用される文字セット
      例外:
      IOException - ソースを開く際にI/Oエラーが発生した場合
      導入されたバージョン:
      10
    • Scanner

      public Scanner(Path source) throws IOException
      指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。 ファイルから取得したバイトは、基になるプラットフォームのデフォルト文字セットを使用して文字に変換されます。
      パラメータ:
      source - スキャン対象のファイルへのパス
      例外:
      IOException - ソースを開いているときに入出力エラーが発生した場合
      導入されたバージョン:
      1.7
    • Scanner

      public Scanner(Path source, String charsetName) throws IOException
      指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。 ファイルから取得したバイトは、指定された文字セットを使用して文字に変換されます。
      パラメータ:
      source - スキャン対象のファイルへのパス
      charsetName - ファイルから取得したバイトをスキャン対象の文字に変換する際に使用するエンコーディング型
      例外:
      IOException - ソースを開いているときに入出力エラーが発生した場合
      IllegalArgumentException - 指定されたエンコーディングが見つからない場合
      導入されたバージョン:
      1.7
    • Scanner

      public Scanner(Path source, Charset charset) throws IOException
      指定されたファイルからスキャンされた値を生成する新しいScannerを構築します。 ファイルから取得したバイトは、指定された文字セットを使用して文字に変換されます。
      パラメータ:
      source - スキャン対象のファイルへのパス
      charset - バイトをファイルからスキャンする文字に変換するために使用される文字セット
      例外:
      IOException - ソースを開く際にI/Oエラーが発生した場合
      導入されたバージョン:
      10
    • 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 - 指定された文字セットが存在しない場合
    • Scanner

      public Scanner(ReadableByteChannel source, Charset charset)
      指定されたチャネルからスキャンされた値を生成する新しいScannerを構築します。 ソースから取得したバイトは、指定された文字セットを使用して文字に変換されます。
      パラメータ:
      source - スキャンするチャネル
      charset - チャネルからのバイトをスキャンする文字に変換するために使用されるエンコーディング・タイプ
      導入されたバージョン:
      10
  • メソッドの詳細

    • close

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

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

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

      定義:
      close、インタフェースAutoCloseable
      定義:
      close、インタフェースCloseable
    • 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()findWithinHorizon()、およびskip()メソッドは、成功した場合に利用可能な一致を行います。

      戻り値:
      最後のマッチング操作の結果
      例外:
      IllegalStateException - マッチング結果が使用可能ではない場合
    • toString

      public String toString()

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

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

      public boolean hasNext()
      このスキャナが入力内に別のトークンを保持する場合はtrueを返します。 このメソッドは、入力のスキャンの待機中にブロックを実行する可能性があります。 このスキャナがクローズしている場合
      定義:
      hasNext、インタフェースIterator<String>
      戻り値:
      このスキャナが別のトークンを保持する場合にのみtrue
      例外:
      IllegalStateException - このスキャナがクローズしている場合
      関連項目:
    • next

      public String next()
      このスキャナから次の完全なトークンを検索して返します。 完全なトークンの前後には、区切り文字パターンに一致する入力が配置されます。 このメソッドは、前のhasNext()の呼出しでtrueが返された場合でも、入力のスキャンの待機中にブロックを実行する可能性があります。
      定義:
      next、インタフェースIterator<String>
      戻り値:
      次のトークン
      例外:
      NoSuchElementException - 利用可能なトークンがこれ以上存在しない場合
      IllegalStateException - このスキャナがクローズしている場合
      関連項目:
    • remove

      public void remove()
      removeオペレーションは、このIteratorの実装によってサポートされていません。
      定義:
      remove、インタフェースIterator<String>
      例外:
      UnsupportedOperationException - このメソッドが呼び出された場合。
      関連項目:
    • 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 - 検索するパターンを指定する文字列
      horizon - 検索horizon
      戻り値:
      指定されたパターンに一致したテキスト
      例外:
      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 - スキャンするパターン
      horizon - 検索horizon
      戻り値:
      指定されたパターンに一致したテキスト
      例外:
      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を返します。 このスキャナがクローズしている場合

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

      パラメータ:
      radix - トークンをbyte値として解釈するために使用する基数
      戻り値:
      このスキャナの次のトークンが有効なbyte値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
      IllegalArgumentException - 基数が範囲外の場合
    • 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に渡されます。

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

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

      public boolean hasNextShort()
      このスキャナの入力内の次のトークンが、nextShort()メソッドを使ってデフォルト基数のshort値として解釈可能な場合にtrueを返します。 このスキャナがクローズしている場合
      戻り値:
      このスキャナの次のトークンがデフォルトの基数の有効なshort値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
    • hasNextShort

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

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

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

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

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

      public boolean hasNextInt()
      このスキャナの入力内の次のトークンが、nextInt()メソッドを使ってデフォルト基数のint値として解釈可能な場合にtrueを返します。 このスキャナがクローズしている場合
      戻り値:
      このスキャナの次のトークンが有効なint値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
    • hasNextInt

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

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

      パラメータ:
      radix - トークンをint値として解釈するために使用する基数
      戻り値:
      このスキャナの次のトークンが有効なint値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
      IllegalArgumentException - 基数が範囲外の場合
    • 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に渡されます。

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

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

      public boolean hasNextLong()
      このスキャナの入力内の次のトークンが、nextLong()メソッドを使ってデフォルト基数のlong値として解釈可能な場合にtrueを返します。 このスキャナがクローズしている場合
      戻り値:
      このスキャナの次のトークンが有効なlong値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
    • hasNextLong

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

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

      パラメータ:
      radix - トークンをlong値として解釈するために使用する基数
      戻り値:
      このスキャナの次のトークンが有効なlong値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
      IllegalArgumentException - 基数が範囲外の場合
    • 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に渡されます。

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

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

      public boolean hasNextFloat()
      このスキャナの入力内の次のトークンが、nextFloat()メソッドを使ってfloat値として解釈可能な場合にtrueを返します。 このスキャナがクローズしている場合
      戻り値:
      このスキャナの次のトークンが有効なfloat値である場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
    • nextFloat

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

      次のトークンが上で定義されているFloat正規表現にマッチする場合には、ロケール固有のすべての接頭辞、グループ区切り文字、およびロケール固有の接尾辞を削除し、Character.digitによって非ASCII数字をASCII数字にマッピングし、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号(-)を前に付け、結果の文字列をFloat.parseFloatに渡すことで、トークンがfloat値に変換されます。 トークンがローカライズされた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正規表現にマッチする場合には、ロケール固有のすべての接頭辞、グループ区切り文字、およびロケール固有の接尾辞を削除し、Character.digitによって非ASCII数字をASCII数字にマッピングし、ロケール固有の負の接頭辞および接尾辞が存在していた場合には負の符号(-)を前に付け、結果の文字列をDouble.parseDoubleに渡すことで、トークンがdouble値に変換されます。 トークンがローカライズされた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)
      このスキャナの入力内の次のトークンが、nextBigInteger()メソッドを使って、指定された基数のBigIntegerとして解釈可能な場合にtrueを返します。 このスキャナがクローズしている場合

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

      パラメータ:
      radix - トークンを整数として解釈するために使用する基数
      戻り値:
      このスキャナの次のトークンが有効なBigIntegerである場合にのみ、true
      例外:
      IllegalStateException - このスキャナがクローズしている場合
      IllegalArgumentException - 基数が範囲外の場合
    • 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値に変換されます。

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

      パラメータ:
      radix - トークンの解釈に使用する基数
      戻り値:
      入力からスキャンしたBigInteger
      例外:
      InputMismatchException - 次のトークンがInteger正規表現に一致しないか範囲外である場合
      NoSuchElementException - スキャンする入力がなくなった場合
      IllegalStateException - このスキャナがクローズしている場合
      IllegalArgumentException - 基数が範囲外の場合
    • 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()useLocale()、またはuseRadix()の呼び出しによって変更された明示的な状態情報がすべて破棄されます。

      このメソッドをscanner.reset()の形式で呼び出した場合、次の呼び出しと同じ結果が得られます

      
         scanner.useDelimiter("\\p{javaWhitespace}+")
                .useLocale(Locale.getDefault(Locale.Category.FORMAT))
                .useRadix(10);
       

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

      public Stream<String> tokens()
      このスキャナから区切り記号で区切られたトークンのストリームを返します。 ストリームには、hasNext()メソッドがfalseを返すまでnext()メソッドを繰り返し呼び出すことによって、このスキャナの現在の状態から返される同じトークンが含まれます。

      結果のストリームはシーケンシャルで順序付けされています。 すべてのストリーム要素が非nullです。

      このスキャナの現在の状態を使用して、ターミナル・ストリーム操作の開始時にスキャンが開始されます。 close()およびioException()以外のこのスキャナ上のメソッドへのその後の呼び出しは、未定義の結果を返すか、返されたストリームに未定義の影響を与える可能性があります。 返されるストリーム・ソースSpliteratorfail-fastであり、ストリーム・パイプライン実行中にそのような呼び出しが検出された場合、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。

      ストリーム・パイプラインの実行が完了すると、このスキャナは不確定な状態のままになり、再利用できなくなります。

      このスキャナに解放する必要のあるリソースが含まれている場合、このスキャナはclose()メソッドを呼び出すか、返されたストリームを閉じることによって閉じなければなりません。 ストリームを閉じると、基になるスキャナが閉じます。 IllegalStateExceptionは、このメソッドが呼び出されたときにスキャナが閉じられた場合、またはストリーム・パイプライン実行中にこのスキャナが閉じられた場合にスローされます。

      このメソッドは、入力を待つのをブロックする可能性があります。

      APIのノート:
      たとえば、次のコードは、文字列からコンマ区切りのトークンのリストを作成します:
      
       List<String> result = new Scanner("abc,def,,ghi")
           .useDelimiter(",")
           .tokens()
           .collect(Collectors.toList());
       

      結果のリストには、"abc""def"、空の文字列、および"ghi"が含まれます。

      戻り値:
      トークン列の連続ストリーム
      例外:
      IllegalStateException - このスキャナがクローズしている場合
      導入されたバージョン:
      9
    • findAll

      public Stream<MatchResult> findAll(Pattern pattern)
      このスキャナからの一致結果のストリームを返します。 ストリームには、findWithinHorizon(pattern, 0)を呼び出してからmatch()を呼び出して返される同じ順序で同じ結果が含まれます。findWithinHorizon()が一致している限り、連続しています。

      結果のストリームはシーケンシャルで順序付けされています。 すべてのストリーム要素が非nullです。

      このスキャナの現在の状態を使用して、ターミナル・ストリーム操作の開始時にスキャンが開始されます。 close()およびioException()以外のこのスキャナ上のメソッドへのその後の呼び出しは、未定義の結果を返すか、返されたストリームに未定義の影響を与える可能性があります。 返されるストリーム・ソースSpliteratorfail-fastであり、ストリーム・パイプライン実行中にそのような呼び出しが検出された場合、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。

      ストリーム・パイプラインの実行が完了すると、このスキャナは不確定な状態のままになり、再利用できなくなります。

      このスキャナに解放する必要のあるリソースが含まれている場合、このスキャナはclose()メソッドを呼び出すか、返されたストリームを閉じることによって閉じなければなりません。 ストリームを閉じると、基になるスキャナが閉じます。 IllegalStateExceptionは、このメソッドが呼び出されたときにスキャナが閉じられた場合、またはストリーム・パイプライン実行中にこのスキャナが閉じられた場合にスローされます。

      findWithinHorizon()メソッドと同様に、このメソッドは追加の入力を待機するのをブロックし、無限の量の入力をバッファリングして一致するものを検索します。

      APIのノート:
      たとえば、次のコードはファイルを読み取り、7つ以上のラテン大文字で構成されるすべての文字列のリストを返します:
      
       try (Scanner sc = new Scanner(Path.of("input.txt"))) {
           Pattern pat = Pattern.compile("[A-Z]{7,}");
           List<String> capWords = sc.findAll(pat)
                                     .map(MatchResult::group)
                                     .collect(Collectors.toList());
       }
       
      パラメータ:
      pattern - 照合するパターン
      戻り値:
      一致結果の連続ストリーム
      例外:
      NullPointerException - patternがnullである場合
      IllegalStateException - このスキャナがクローズしている場合
      導入されたバージョン:
      9
    • findAll

      public Stream<MatchResult> findAll(String patString)
      提供されたパターン文字列と一致する一致結果のストリームを返します。 この効果は次のコードと同じです:
      
           scanner.findAll(Pattern.compile(patString))
       
      パラメータ:
      patString - パターン文字列
      戻り値:
      一致結果の連続ストリーム
      例外:
      NullPointerException - patStringがnullの場合
      IllegalStateException - このスキャナがクローズしている場合
      PatternSyntaxException - 正規表現の構文が無効な場合
      導入されたバージョン:
      9
      関連項目: