CodeGym /Cours /JAVA 25 SELF /Saisie au clavier

Saisie au clavier

JAVA 25 SELF
Niveau 2, Leçon 5
Disponible

1. Lecture depuis la console, System.in

Dans les cours précédents, nous avons découvert les commandes d’affichage à l’écran. Pour cela, nous avons utilisé l’objet System.out et ses méthodes print() et println(). Simple et pratique.

Mais, comme vous vous en doutez sans doute, l’affichage à l’écran ne suffit pas. La plupart des programmes ont pour objectif de faire quelque chose d’utile pour l’utilisateur. Il est donc très souvent nécessaire que l’utilisateur puisse saisir des données au clavier.

Comme pour la sortie, il existe également un objet spécial pour l’entrée de données — System.in. Mais, malheureusement pour nous, il n’est pas aussi pratique que nous le souhaiterions. Cet objet permet de lire les données depuis le clavier, mais uniquement un caractère à la fois.

Nous allons donc utiliser une autre classe qui, associée à l’objet System.in, nous donnera tout ce dont nous avons besoin. En Java, il existe depuis longtemps des classes pour tous les cas de figure. Et nous allons justement en découvrir une.

2. La classe Scanner

La classe Scanner (nom complet java.util.Scanner) sait lire des données à partir de différentes sources : console, fichiers, Internet. Si nous voulons qu’elle lise les données depuis le clavier, nous devons lui passer l’objet System.in en paramètre — la source des données. L’objet de type Scanner se chargera ensuite de tout.

La lecture au clavier à l’aide d’un objet de type Scanner ressemble à ceci :

Code Explication
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Nous créons un objet de la classe Scanner. Nous lisons une ligne de texte au clavier. Nous lisons un nombre au clavier.

Cela n’a pas l’air compliqué, mais est-ce vraiment aussi simple ?

Je suppose que vous avez plein de questions, et nous allons y répondre.

Mais commençons par un exemple de programme complet utilisant la classe Scanner :

void main()
{
    Scanner console = new Scanner(System.in);
    String name = console.nextLine();
    int age = console.nextInt();

    System.out.println("Name: " + name);
    System.out.println("Age: " + age);
}

3. Création d’un objet Scanner

Première question — qu’est-ce que signifie la ligne Scanner console = new Scanner(System.in); ?

Une telle ligne peut prêter à confusion, mais vous rencontrerez souvent des constructions similaires. Je pense donc qu’il est temps d’expliquer ce qui est écrit ici.

Rappelons comment nous créons habituellement une variable contenant du texte :


String str = "texte";
Déclaration et initialisation d’une variable de type chaîne

Nous écrivons d’abord le type de la variable (String), puis son nom (str) et, enfin, la valeur après le signe égal.

Dans notre ligne « étrange », c’est en fait la même chose :


Scanner console = new Scanner(System.in);
Déclaration et initialisation d’une variable de type Scanner

Tout ce qui se trouve à gauche du signe égal — c’est la déclaration d’une variable de type Scanner nommée console. On aurait pu l’appeler, par exemple, s ou scanner, ou même keyboard. Dans ce cas, le code ressemblerait à ceci :

Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();

Je pense que c’est maintenant beaucoup plus clair.

Le code qui se trouve à droite du signe égal est un peu plus complexe. Je parle de new Scanner(System.in); Mais rien de sorcier non plus.

Dans ce code, nous disons à la machine Java : crée un nouvel objet (le mot-clé new) de type Scanner, et passe-lui en paramètre la source à partir de laquelle le nouvel objet Scanner lira les données — l’objet System.in.

Après l’exécution de toute cette ligne, nous aurons une variable nommée console de type Scanner, grâce à laquelle notre programme pourra lire des données depuis le clavier.

4. Appel de méthodes

Dans l’exemple ci-dessus, notre variable console de type Scanner stockait en elle une référence à un objet de type Scanner.

Pour appeler les méthodes de l’objet référencé par la variable, il faut écrire un point après le nom de la variable, puis le nom de la méthode et ses paramètres. La forme générale de cette instruction est la suivante :


variable.method(parameters);
Appel d’une méthode de l’objet référencé par la variable

Exemples :

System.out.println("Bonjour");
System.out.println(1);

Si vous ne prévoyez pas de passer de paramètres à la fonction, il suffit d’écrire des parenthèses vides :


variable.method();
Appel d’une méthode sans passer de paramètres

Exemple :

System.out.println();

5. Saisie de données depuis la console

Saisir des données au clavier, lorsqu’on dispose d’un objet de type Scanner, est très facile.

Pour lire une chaîne depuis le clavier, utilisez l’instruction :


String str = console.nextLine();

Lorsque le programme atteindra l’exécution de cette ligne, il se mettra en pause et attendra que l’utilisateur saisisse des données et appuie sur la touche Entrée. Ensuite, tout ce que l’utilisateur aura saisi sera enregistré dans la variable str.

Pour lire un nombre depuis le clavier, utilisez l’instruction :


int number = console.nextInt();

Ici, c’est analogue à l’instruction précédente. Lorsque le programme atteindra cette ligne, il se mettra en pause et attendra que l’utilisateur saisisse des données et appuie sur la touche Entrée. Ensuite, tout ce que l’utilisateur aura saisi sera converti en nombre et stocké dans la variable number.

Si l’utilisateur saisit des données qui ne peuvent pas être converties en entier, une erreur se produira et le programme s’arrêtera.

Pour lire un nombre à virgule (flottant) depuis le clavier, utilisez l’instruction :

double number = console.nextDouble();

Cette instruction est entièrement analogue à nextInt(), sauf qu’elle vérifie que les données saisies peuvent être converties en un nombre double.

Exemple de programme qui lit deux nombres au clavier et affiche leur somme :

void main()
{
    Scanner console = new Scanner(System.in);
    int a = console.nextInt();
    int b = console.nextInt();

    System.out.println(a + b);
}

Remarque

L’utilisateur peut saisir plusieurs nombres sur une même ligne en les séparant par des espaces : une telle situation sera correctement traitée par les méthodes de la classe Scanner. Cependant, les nombres ne seront lus par le programme qu’après que l’utilisateur aura appuyé sur Entrée.

1
Mission
JAVA 25 SELF, niveau 2, leçon 5
Bloqué
Saisie du mot de passe 🔒
Saisie du mot de passe 🔒
1
Mission
JAVA 25 SELF, niveau 2, leçon 5
Bloqué
Inscription d'un nouveau joueur 🎮
Inscription d'un nouveau joueur 🎮
1
Mission
JAVA 25 SELF, niveau 2, leçon 5
Bloqué
Calcul du coût total des achats 🛒
Calcul du coût total des achats 🛒
1
Mission
JAVA 25 SELF, niveau 2, leçon 5
Bloqué
Création d'une carte de visite numérique 📇
Création d'une carte de visite numérique 📇
1
Étude/Quiz
Découverte des types int et String, niveau 2, leçon 5
Indisponible
Découverte des types int et String
Découverte des types int et String
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION