JAVA next(),nextLine()の違い


これまでnext()とnextLine()の違いを知らずに使ってきました
違いが気になって探してみました.
next()、nextLine()はScannerクラスのメソッドです.
共通点は文字列を返しますが、違いは次のとおりです.
nextLine()メソッドは、車に戻る前に書き込まれたすべての文字列を返します.
next()メソッドは、スペースの前に入力した文字列を返します.

I/O時の結果

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int number;
        String string;
        System.out.print("숫자 입력 : ");
        number = scanner.nextInt();

        System.out.println("문자열 입력 : ");
        string = scanner.nextLine();
        scanner.close();

        System.out.println("숫자입력 결과 : " + number);
        System.out.println("문자열입력 결과 : " + string);
    }
}
package indiangame;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int number;
        String string;
        System.out.print("숫자 입력 : ");
        number = scanner.nextInt();

        System.out.print("문자열 입력 : ");
        string = scanner.next();
        scanner.close();

        System.out.println("숫자입력 결과 : " + number);
        System.out.println("문자열입력 결과 : " + string);
    }
}

nextIntとnextLineを使用した場合の結果ウィンドウでは、nextInt()のみが入力を受信し、nextLineは入力を受信していないことがわかります.

理由は何ですか。


next()は、先頭文字(Enter)が入力を受け入れるのを無視し、nextLineは1つの動作単位で入力を受け入れるので、ポストガイド文字(Enter)も含まれます.
より直感的には、上記のように1234を入力してEnterを押すと、バッファに1234nが存在する.この場合、nextInt()がバッファの内容を取得すると、セパレータを除いて1234のみがインポートされます.これにより、バッファにはnが残ります.nextLine()にはスペースと接尾辞区切り記号(Enter)が含まれているので、nのみをインポートしてプログラムを終了します.

方法を参照