HOWTO · Java

Unterschied zwischen next()- und nextLine()-Methoden von Java Scanner Class

Erfahren Sie, wann Sie Scanner.next() für ein Token und Scanner.nextLine() für den Rest einer Zeile verwenden, und was passiert, wenn Sie die beiden Methoden kombinieren.

Auf dieser Seite

Scanner.next() liest ein Token, während Scanner.nextLine() den Rest der aktuellen Zeile einschließlich darin enthaltener Leerzeichen zurückgibt. Verwenden Sie next() für Eingaben, die durch das Trennmuster des Scanners getrennt sind (standardmäßig durch Leerraum), und nextLine(), wenn die gesamte Zeile einen Wert bildet.

Die Methode next() in Java Scanner

next() gibt das nächste Token entsprechend dem Trennmuster von Scanner zurück. Beim Standardtrennmuster trennt Leerraum – einschließlich Leerzeichen, Tabulatoren und Zeilenumbrüchen – die Tokens. Bei der Eingabe Welcome To Party gibt der erste Aufruf von next() beispielsweise Welcome zurück.

Dieses eigenständige Programm verwendet eine feste Beispielzeile und gibt das erste Token aus:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("Welcome To Party");
        System.out.println(scanner.next());
        scanner.close();
    }
}
Welcome

Die Methode nextLine() in Java Scanner

nextLine() gibt den Rest der aktuellen Zeile zurück, wobei Leerzeichen innerhalb des Textes erhalten bleiben, und verbraucht den Zeilenabschluss. Besteht die Eingabe aus Welcome To, gefolgt von einem Zeilenumbruch und Party, gibt ein Aufruf Welcome To zurück; ein späterer Aufruf kann Party lesen.

Dieses Programm liest die erste vollständige Zeile einer festen Beispieleingabe und gibt sie aus:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("Welcome To\nParty\n");
        System.out.println(scanner.nextLine());
        scanner.close();
    }
}
Welcome To

Unterschied zwischen next() und nextLine() in Java

Verhalten next() nextLine()
Rückgabewert Das nächste Token, wie durch das aktuelle Trennmuster definiert Der Rest der aktuellen Zeile einschließlich der darin enthaltenen Leerzeichen
Beendet bei Dem nächsten Trennzeichen; standardmäßig bei beliebigem Leerraum Dem Zeilenabschluss, den die Methode verbraucht
Typische Verwendung Ein Wert wie ein Name oder eine Zahl, der von anderen Eingaben getrennt ist Eine vollständige Zeile, etwa der vollständige Name einer Person oder ein Satz

Nach einem Aufruf zum Lesen eines Tokens wurde der Rest dieser Zeile einschließlich ihres Zeilenabschlusses von next() noch nicht verbraucht. Ein anschließender Aufruf von nextLine() gibt daher den Rest derselben Zeile zurück. Ist nur noch der Zeilenabschluss vorhanden, ist das Ergebnis eine leere Zeichenfolge. Um die nächste vollständige Zeile zu lesen, rufen Sie nextLine() zuerst einmal auf, um den Rest zu verbrauchen, und dann erneut für die folgende Zeile.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nAda Lovelace\n");
        String number = scanner.next();
        String restOfFirstLine = scanner.nextLine();
        String fullName = scanner.nextLine();
        System.out.println(number);
        System.out.println(restOfFirstLine.isEmpty());
        System.out.println(fullName);
        scanner.close();
    }
}
42
true
Ada Lovelace