Lire les entrées clavier
Ce document explique comment lire les entrées clavier en Java, un aspect fondamental pour permettre à un programme de communiquer avec l'utilisateur via la console. Il s'adresse aux étudiants débutants en programmation Java souhaitant apprendre à saisir et manipuler des données depuis le clavier.
D'après le document Lire les entrées clavier
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming in Java · PDF · 6 pages · 2015
Afficher l'aperçu du document
Ce document explique comment lire les entrées clavier en Java, un aspect fondamental pour permettre à un programme de communiquer avec l'utilisateur via la console. Il s'adresse aux étudiants débutants en programmation Java souhaitant apprendre à saisir et manipuler des données depuis le clavier.
La classe Scanner
Pour lire ce que l'utilisateur tape au clavier, Java utilise un objet de type Scanner. Cet objet permet de récupérer les données saisies via l'entrée standard, représentée par System.in. Avant de pouvoir utiliser la classe Scanner, il faut l'importer depuis le package java.util car elle n'appartient pas au package java.lang qui est importé automatiquement.
Voici comment créer un objet Scanner dans la méthode main :
Scanner sc = new Scanner(System.in);
Pour que cette instruction fonctionne sans erreur, il faut importer la classe Scanner en ajoutant en haut du fichier :
import java.util.Scanner;
On peut aussi importer toutes les classes du package java.util avec :
import java.util.*;Récupérer une chaîne de caractères
Pour lire une ligne de texte saisie par l'utilisateur, on utilise la méthode nextLine() de l'objet Scanner. Par exemple :
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un mot :");
String str = sc.nextLine();
System.out.println("Vous avez saisi : " + str);
Lorsque le programme est lancé, le message s'affiche dans la console et attend que l'utilisateur saisisse une ligne de texte. Cette ligne est ensuite stockée dans la variable str de type String et affichée.
Lire un nombre entier ou un autre type primitif
Pour lire un nombre entier, on utilise la méthode nextInt() :
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un nombre :");
int nombre = sc.nextInt();
System.out.println("Vous avez saisi le nombre : " + nombre);
De manière générale, pour lire un type primitif, on utilise la méthode next<Type>() où Type commence par une majuscule :
nextInt()pourintnextDouble()pourdoublenextLong()pourlongnextByte()pourbyte
Exemple :
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
double d = sc.nextDouble();
long l = sc.nextLong();
byte b = sc.nextByte();
Attention : si l'utilisateur saisit une valeur incompatible avec le type attendu (par exemple une lettre au lieu d'un entier), une erreur (exception) peut survenir, mais ce point sera traité ultérieurement.
Lire un caractère
La classe Scanner ne propose pas de méthode directe pour lire un char. Pour récupérer un caractère, on peut lire une chaîne de caractères avec nextLine() puis extraire le premier caractère avec la méthode charAt(0) :
System.out.println("Saisissez une lettre :");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char carac = str.charAt(0);
System.out.println("Vous avez saisi le caractère : " + carac);
Cette méthode renvoie uniquement le premier caractère de la chaîne saisie, même si l'utilisateur tape plusieurs caractères.
Attention à l'utilisation combinée de nextInt() et nextLine()
Un piège fréquent survient lorsqu'on utilise nextInt() suivi directement de nextLine(). En effet, nextInt() ne consomme pas le caractère de fin de ligne, ce qui fait que nextLine() récupère une ligne vide et ne demande pas de nouvelle saisie.
Exemple problématique :
Scanner sc = new Scanner(System.in);
System.out.println("Saisissez un entier :");
int i = sc.nextInt();
System.out.println("Saisissez une chaîne :");
String str = sc.nextLine(); // Ne demande pas de saisie, récupère une ligne vide
System.out.println("FIN !");
Pour corriger ce problème, il faut vider la ligne après l'appel à nextInt() en ajoutant un appel à nextLine() avant de lire la chaîne :
Scanner sc = new Scanner(System.in);
System.out.println("Saisissez un entier :");
int i = sc.nextInt();
System.out.println("Saisissez une chaîne :");
// On vide la ligne avant de lire la suivante
sc.nextLine();
String str = sc.nextLine();
System.out.println("FIN !");
Glossaire des termes clés
- Scanner : classe Java utilisée pour lire les entrées clavier.
- System.in : entrée standard en Java, généralement le clavier.
- nextLine() : méthode de Scanner qui lit une ligne entière de texte.
- nextInt(), nextDouble(), nextLong(), nextByte() : méthodes de Scanner pour lire des types primitifs spécifiques.
- charAt(index) : méthode de la classe String qui retourne le caractère à la position
index. - Package : ensemble organisé de classes en Java, par exemple
java.util. - Import : instruction Java permettant d'utiliser une classe d'un package spécifique.
- Exception : erreur qui peut survenir lors de l'exécution d'un programme, notamment lors de saisies incorrectes.
Points clés à retenir
- Pour lire des données au clavier en Java, on utilise un objet de type
Scannerinitialisé avecSystem.in. - Il faut importer la classe
Scannerdepuis le packagejava.utilavant de l'utiliser. - Chaque type de donnée possède une méthode dédiée dans
Scanner:nextLine()pour les chaînes,nextInt()pour les entiers, etc. - La lecture d'un caractère se fait en lisant une chaîne puis en extrayant le premier caractère avec
charAt(0). - Attention à la gestion des retours à la ligne lors de l'alternance entre
nextInt()etnextLine(), il faut parfois vider la ligne avec un appel supplémentaire ànextLine(). - La saisie incorrecte peut provoquer des exceptions, mais ce sujet sera abordé ultérieurement.
Commentaires
Aucun commentaire pour le moment. Posez la première question.