3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Scannerクラスのnext()とnextLine()について

Posted at

#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()で読み込まれたのは改行コードのみとなります。

※間違っていたり不正確な内容でしたらご指摘ください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?