#Scannerクラスのnext()とnextLine()について
##next()の動作
next()はスペースで分割されたトークンを検索して、見つかった順にトークンを返します。
一度スキャナから入力を取り込んだ後にトークンを返すので改行うんぬんは関係ありません。
##nextLine()の動作
nextLine()は今あるカーソルを次の行の先頭に進めます。そして、スキップした分を出力します。
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
String line = sc.nextLine();
System.out.println(str);
System.out.println(line);
sc.close();
}
}
上のコードに対して、下のような入力をした場合にどうなるでしょうか。
入力
1
abcde
まず、sc.next()で一番最初のトークンが返されます。
strには1が入ります。
ここでカーソルは1と改行の間に来ます。
入力
1[改行コード]
^
ここ
abcde
ここで、sc.nextLine()を実行すると、次の行の先頭にカーソルが移動します。
入力
1[改行コード]
abcde
^
ここ
つまりnextLine()で読み込まれたのは改行コードのみとなります。
※間違っていたり不正確な内容でしたらご指摘ください。