Maîtriser Java Scanner : Guide complet avec exemples pratiques
Maîtriser Java Scanner : Guide complet avec exemples pratiques
La classe Scanner dans java.util permet de capturer l'entrée depuis des flux, fichiers, chaînes et la console. Voici ses principaux modes d'utilisation.
Exemple 1 : Lecture d'une ligne complète
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Entrez votre nom : ");
String nom = input.nextLine();
System.out.println("Je m'appelle " + nom);
input.close();
}
}
Sortie
Entrez votre nom : Kelvin Je m'appelle Kelvin
La ligne Scanner input = new Scanner(System.in); construit un Scanner écoutant l'entrée clavier. nextLine() consomme la ligne entière jusqu'au saut de ligne.
Importation de la classe Scanner
Avant d'utiliser Scanner, importez-le :
import java.util.Scanner;
Création d'objets Scanner
Selon votre source d'entrée, instanciez un Scanner ainsi :
// Depuis un flux d'entrée (ex: System.in)
Scanner sc1 = new Scanner(InputStream input);
// Depuis un fichier
Scanner sc2 = new Scanner(File fichier);
// Depuis une chaîne
Scanner sc3 = new Scanner(String chaine);
Méthodes principales de Scanner pour la lecture
Scanner offre diverses méthodes pour lire différents types de données :
| Méthode | Description |
|---|---|
nextInt() | Lit un int |
nextFloat() | Lit un float |
nextBoolean() | Lit un boolean |
nextLine() | Lit une ligne complète de texte |
next() | Lit un seul mot (jusqu'à l'espace) |
nextByte() | Lit un byte |
nextDouble() | Lit un double |
nextShort() | Lit un short |
nextLong() | Lit un long |
Exemple 2 : Utilisation de nextInt()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Entrez un entier : ");
int donnee1 = input.nextInt();
System.out.println("Avec nextInt() : " + donnee1);
input.close();
}
}
Sortie
Entrez un entier : 22 Avec nextInt() : 22
Exemple 3 : Utilisation de nextDouble()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Entrez une valeur double : ");
double valeur = input.nextDouble();
System.out.println("Avec nextDouble() : " + valeur);
input.close();
}
}
Sortie
Entrez une valeur double : 33.33 Avec nextDouble() : 33.33
Exemple 4 : Utilisation de next()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Entrez votre nom : ");
String valeur = input.next();
System.out.println("Avec next() : " + valeur);
input.close();
}
}
Sortie
Entrez votre nom : Jonny Walker Avec next() : Jonny
next() s'arrête au premier espace, capturant seulement le prénom.
Exemple 5 : Utilisation de nextLine()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Entrez votre nom : ");
String valeur = input.nextLine();
System.out.println("Avec nextLine() : " + valeur);
input.close();
}
}
Sortie
Entrez votre nom : Jonny Walker Avec nextLine() : Jonny Walker
Contrairement à next(), nextLine() capture la ligne entière, espaces inclus, jusqu'au saut de ligne.
Lecture recommandée : Problème Scanner nextLine() ignoré
Scanner avec BigInteger et BigDecimal
Pour les nombres de haute précision, Scanner supporte :
- nextBigInteger() – Lit un
BigInteger - nextBigDecimal() – Lit un
BigDecimal
Exemple : Lecture de BigInteger et BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Entrez un grand entier : ");
BigInteger val1 = input.nextBigInteger();
System.out.println("Avec nextBigInteger() : " + val1);
System.out.print("Entrez un grand décimal : ");
BigDecimal val2 = input.nextBigDecimal();
System.out.println("Avec nextBigDecimal() : " + val2);
input.close();
}
}
Sortie
Entrez un grand entier : 987654321 Avec nextBigInteger() : 987654321 Entrez un grand décimal : 9.55555 Avec nextBigDecimal() : 9.55555
Fonctionnement interne de Scanner
Scanner lit une ligne entière, puis la divise en jetons (tokens) en utilisant les espaces blancs par défaut. Chaque jeton est récupéré avec la méthode appropriée. Pour l'entrée Il a 22 ans, les jetons sont Il, a, 22.
Astuce : Les jetons sont séparés par espaces, tabulations ou sauts de ligne, sauf si vous personnalisez le délimiteur.
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- L'opérateur instanceof en Java : guide complet
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser Java Scanner : Guide complet avec exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe