1. 概要

このクイックチュートリアルでは、 java .util.ScannerクラスのnextLine()メソッドについて簡単に説明します。もちろん、練習。

2. Scanner.nextLine()

java.util.ScannerクラスのnextLine()メソッドは、行区切り文字が見つかるまで現在の位置からスキャンします。 このメソッドは、Stringを現在の位置から行の終わりまで返します。

したがって、操作後、スキャナーの位置は区切り文字に続く次の行の先頭に設定されます。

このメソッドは、入力データを検索して行区切り記号を探します。 行区切り文字が存在しない場合は、スキップする行を検索するすべての入力データをスキャンする場合があります。

nextLine()メソッドのシグネチャは次のとおりです。

public String nextLine()

このメソッドはパラメーターを取りません。 最後の行区切り記号を除いて、現在の行を返します。

その使用法を見てみましょう:

try (Scanner scanner = new Scanner("Scanner\nTest\n")) {
    assertEquals("Scanner", scanner.nextLine());
    assertEquals("Test", scanner.nextLine());
}

これまで見てきたように、このメソッドは、行区切り記号が見つかるまで、現在のスキャナー位置からの入力を返します。

try (Scanner scanner = new Scanner("Scanner\n")) {
    scanner.useDelimiter("");
    scanner.next();
    assertEquals("canner", scanner.nextLine());
}

上記の例では、 next()を呼び出すと、‘S’ が返され、スキャナーの位置が‘c’を指すように進みます。

したがって、 nextLine()メソッドを呼び出すと、行区切り文字が見つかるまで、現在のスキャナー位置からの入力が返されます。

nextLine()メソッドは、2種類のチェックされた例外をスローします。

まず、行区切り文字が見つからない場合、NoSuchElementExceptionをスローします。

@Test(expected = NoSuchElementException.class)
public void whenReadingLines_thenThrowNoSuchElementException() {
    try (Scanner scanner = new Scanner("")) {
        scanner.nextLine();
    }
}

次に、スキャナーが閉じている場合、IllegalStateExceptionをスローします。

@Test(expected = IllegalStateException.class)
public void whenReadingLines_thenThrowIllegalStateException() {
    Scanner scanner = new Scanner("");
    scanner.close();
    scanner.nextLine();
}

3. 結論

この要点の記事では、Javaの ScannerクラスのnextLine()メソッドについて説明しました。

さらに、単純なJavaプログラムでの使用法を調べました。 最後に、メソッドによってスローされる例外と、それを示すサンプルコードを確認しました。

いつものように、実際の例の完全なソースコードは、GitHubから入手できます。