HOWTO · Java

Différence entre les méthodes next() et nextLine() de la classe Java Scanner

Découvrez quand utiliser Scanner.next() pour un jeton et Scanner.nextLine() pour le reste d’une ligne, y compris ce qui se passe lorsque vous les combinez.

Sur cette page

Scanner.next() lit un jeton, tandis que Scanner.nextLine() renvoie le reste de la ligne en cours, espaces compris. Utilisez next() pour lire une valeur séparée par le délimiteur de Scanner (les espaces blancs par défaut) et nextLine() lorsque la ligne entière constitue une seule valeur.

La méthode next() de Scanner en Java

next() renvoie le jeton suivant selon le délimiteur de Scanner. Avec le délimiteur par défaut, les espaces blancs — notamment les espaces, les tabulations et les sauts de ligne — séparent les jetons. Par exemple, si l’entrée est Welcome To Party, le premier appel à next() renvoie Welcome.

Ce programme autonome utilise une ligne d’exemple fixe et affiche le premier jeton :

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

La méthode nextLine() de Scanner en Java

nextLine() renvoie le reste de la ligne en cours, en conservant les espaces présents dans le texte, puis consomme le séparateur de ligne. Si l’entrée est Welcome To, suivie d’un saut de ligne puis de Party, un appel renvoie Welcome To ; un appel ultérieur peut lire Party.

Ce programme lit et affiche la première ligne complète d’un exemple fixe :

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

Différence entre les méthodes next() et nextLine() en Java

Comportement next() nextLine()
Valeur renvoyée Le jeton suivant, défini par le délimiteur courant Le reste de la ligne en cours, espaces internes compris
Arrêt Au prochain délimiteur ; par défaut, à tout espace blanc Au séparateur de ligne, qu’elle consomme
Usage courant Une valeur, comme un nom ou un nombre, séparée des autres données Une ligne entière, comme un nom complet ou une phrase

Après un appel qui lit un jeton, next() n’a pas consommé le reste de la ligne, séparateur de ligne compris. Un appel suivant à nextLine() renvoie donc le reste de cette même ligne ; s’il ne reste que le séparateur de ligne, le résultat est une chaîne vide. Pour lire la ligne complète suivante, appelez nextLine() une première fois pour consommer le reste de la ligne, puis appelez-la de nouveau pour lire la ligne suivante.

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