Javaスキャナーでのnext()、nextLine()、hasNext()、hasNextLine()の説明
Explanation Next
java.util.ScannerはJava5の新機能であり、キーボードからコンテンツを入力してプログラムに読み込むために使用されます。
-
next()とnextLine()の違い
次():
- 有効な文字を読み取った後、入力を完了する必要があります。
- Next()メソッドは、有効な文字を入力する前に検出された空白を自動的に削除します。
- 有効な文字を入力した後にのみ、その後に入力されたスペースがセパレーターまたはターミネーターとして使用されます。
- next()はスペースを含む文字列を取得できません。
nextLine():
- ターミネータとしてEnterを使用します。つまり、nextLine()メソッドは、キャリッジリターンの前にすべての文字を返します。
- 空白になる可能性があります。
Scannerクラスのnext()メソッドとnextLine()メソッドを介して入力文字列を取得します。読む前に、通常、hasNextとhasNextLineを使用して、入力データがあるかどうかを判断する必要があります。 -
hasNext()とhasNextLine()の違い
hasNext():
- 1.出力はブール値です。
- 2.入力バッファが有効な文字であるかどうかを判断し、スペースで終了します。
- 3.スペースのみが入力された場合、一致はなく、falseを返します。
hasNextLine():
- 1.終了文字としてEnterを使用して、この行に入力があるかどうかを判別します。空白の入力もtrueを返します。
スキャナークラス経由 次() 対 nextLine() 入力文字列を取得するメソッド。通常、読み取る前に使用する必要があります。 hasNext 対 hasNextLine 入力データがあるかどうかを判別します。
-
使用中の適切な一致
hasNext()—> next()
hasNextLine()----> nextLine()
-
クロスマッチング法をテストする
hasNext()とnextLine()を一緒に使用する場合:
Scanner sc = new Scanner(System.in) while (sc.hasNext()) { System.out.println(sc.nextLine()) }
効果は次のとおりです。
- スペースを入力すると、hasNext()はスペースとスペースを検出し、一致しません(hasNextLine()は一致します)。その後に有効な文字列が続くと、前に入力したスペースと一緒に出力されます。
- 最も多く入力されたabc、入力されたabcは、コンソールに入力したときに、最初にabcと入力し、次にabcに変更してから、abcを出力したためです。多くのテストの後、結論は、入力した内容が時間の経過後にコンテンツにスペースを挿入すると、出力にスペースが含まれなくなるということです。
hasNext()とnextLine()を一緒に使用する場合:Scanner sc = new Scanner(System.in) while (sc.hasNextLine()) { System.out.println(sc.next()) }
効果は次のとおりです。
出力文字列がスペースで区切られている場合、next()はスペースの前の1文字のみを読み取ります。
たとえば、上記の入力:abc、next()がaの読み取り時にスペースに遭遇すると、aのみが読み取られ、bcはキャッシュに残り、ループを続行し、hasNextLine()はtrueを返し、キャッシュ内のコンテンツを読み取るまで終了しました。