Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Programmation > Programmation en Java > Bien commencer en Java > Lire les entrées clavier > Lecture du tutoriel

Lire les entrées clavier

Avatar
Auteur : cysboy
Difficulté : Débutant (1 / 5)
Note : 19 / 20 (3 votes)
Visualisations : 62 634


Plus d'informations Plus d'informations
Dans ce chapitre, nous verrons comment lire les entrées clavier.
Nous survolerons ceci sans voir les différents cas d'erreurs que cela peut engendrer.
Trêve de bavardage, je suis sûr que vous êtes impatients... ;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Utilisation de l'objet Scanner

Je me doute qu'il vous tardait de pouvoir communiquer avec votre application... :p
Le moment est enfin venu ! Mais je vous préviens, la méthode que je vais vous donner à des failles.
Je vous fais confiance pour ne pas rentrer n'importe quoi n'importe quand...

Pour les puristes qui me diront "ouais, mais si je rentre ça, tu vas te prendre une belle exception dans ta face !", je le sais, mais je ne trouve pas opportun de vous parler des exceptions et de la manière de les capturer maintenant... Bon. Allons-y ! ;)

Je vous ai dit que vos variables de type String sont en fait des objets de type String. Pour que Java puisse lire ce que vous tapez au clavier, vous allez devoir utiliser un objet de type Scanner (merci à Myhtrys).

Je vous rappelle que pour instancier un objet, c'est-à-dire créer un nouvel objet afin de s'en servir, vous devez utiliser l'opérateur unaire new().


Cet objet peut prendre différents paramètres, mais ici, nous n'en utiliserons qu'un. Celui qui correspond justement à l'entrée standard en Java.
Lorsque vous faites System.out.println();, je vous rappelle que vous appliquez la méthode println() sur la sortie standard ; or ici, nous allons utiliser l'entrée standard System.in.
Donc, avant de dire à Java de lire ce que nous allons taper au clavier, nous devrons instancier un objet Scanner.
Pour pouvoir utiliser un objet Scanner, nous devons dire à Java où trouver cet objet !

Avant de vous expliquer ceci, créez une nouvelle classe et tapez cette ligne de code dans votre méthode main :
Code : Java
1
Scanner sc = new Scanner(System.in);

Vous devez avoir une zolie vague rouge sous le mot Scanner.
Mais souvenez-vous de l'astuce que je vous avais donnée pour le cast de variables. Cliquez sur la croix rouge sur la gauche et double-cliquez sur "Import 'Scanner' java.util". Et là, l'erreur disparaît ! :D
Image utilisateur


Maintenant, regardez tout au dessus de votre classe, au dessus de la déclaration de celle-ci, vous devez avoir une ligne :
Code : Java
1
import java.util.Scanner;


Voilà ce que nous avons fait. Je vous ai dit qu'il fallait dire à Java où se trouve la classe Scanner.
Pour faire ceci, nous devons importer la classe Scanner, grâce à l'instruction import.
La classe que nous voulons se trouve dans le package java.util.

Tout d'abord, vous devez savoir que le langage Java n'est qu'une multitude de classes ordonnées en packages. Par défaut, Java incorpore automatiquement un package contenant les fondements de Java : java.lang. C'est dans ce package qu'il y a les variables de bases, la classe System et beaucoup d'autres choses qui vous permettent de faire des programmes. Pour voir le contenu de ce package, vous pouvez allez voir ici.

Je pense que vous avez compris qu'un package est en fait un ensemble de classes. En fait, c'est un ensemble de dossiers et de sous-dossiers contenant une ou plusieurs classes.
Par exemple, nous avons importé tout à l'heure la classe Scanner qui se trouve dans le package java.util. Remplacez les . par des /, l'arborescence des dossiers est donc java/util/ et dans ce dossier se trouve le fichier Scanner.class ! Vous verrez ceci plus en détail lorsque nous ferons nos propre packages. ^^

Les classes qui se trouvent dans les autres packages que java.lang sont à importer à la main dans vos classes Java pour pouvoir vous en servir.
La façon dont nous avons importé la classe java.util.Scanner dans Eclipse est très pratique et très simple. Vous pouvez aussi le faire manuellement en tapant :
Code : Java
1
2
3
4
//Ceci importe la classe Scanner du package java.util
import java.util.Scanner; 
//Ceci importe toutes les classes du package java.util
import java.util.*;

Si vous faites vos imports manuellement, n'oubliez surtout pas le ; à la fin !

Maintenant que vous avez assimilé ceci, nous pouvons retourner à nos moutons ! ;)

Récupérez ce que vous tapez

Retournons à notre morceau de code, pour mémoire :
Code : Java
1
Scanner sc = new Scanner(System.in);


Afin de vous préparer à saisir des informations, veuillez afficher un message à l'écran ; nous avons donc :
Code : Java
1
2
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un mot :");

Maintenant, voici l'instruction pour permettre à Java de récupérer ce que vous avez saisi et ensuite de l'afficher :
Code : Java
1
2
3
4
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un mot :");
String str = sc.nextLine();
System.out.println("Vous avez saisi : " + str);

Une fois l'application lancée, le message que vous avez écrit auparavant s'affiche dans la console, en bas dans Eclipse (vous avez l'habitude, maintenant ;) ).
Pensez à cliquer dans la console, après votre message, afin que ce que vous saisissez soit écrit dans la console, pour que Java puisse récupérer ce que vous avez inscrit !

Image utilisateur

Alors ? Heureux ? :D
Voilà votre première saisie clavier ! Comme vous avez pu le constater, l'instruction nextLine() renvoie une chaîne de caractères. Si vous avez essayé de remplacer la variable de type String par une variable d'un autre type, vous avez dû voir qu'Eclipse n'apprécie pas du tout... Et si vous avez cliqué sur la croix rouge pour corriger le problème, vous constatez que la seule solution qu'il vous propose est de changer le type de votre variable pour le type String.

Vous aurez remarqué aussi qu'Eclipse vous simplifie la vie au maximum. Lorsque vous tapez "sc.", Eclipse vous propose une liste de méthodes appartenant à cet objet.

Si vous remplacez la ligne de code qui récupère une chaîne de caractères comme suit :
Code : Java
1
2
3
4
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un nombre :");
int str = sc.nextInt();
System.out.println("Vous avez saisi le nombre : " + str);

vous devez voir que lorsque vous utilisez votre variable de type Scanner, et où vous tapez le point permettant d'appeler des méthodes de l'objet, Eclipse vous donne une liste de méthodes associées à cet objet et, lorsque vous commencez à taper le début de la méthode nextInt(), le choix se restreint jusqu'à ne laisser que cette seule méthode.

Exécutez et testez ce programme et vous verrez qu'il fonctionne à la perfection ! Sauf... si vous saisissez autre chose qu'un entier !
C'est ce que je vous disais au départ de ce chapitre. L'objet essaie de récupérer un entier, mais si vous lui donnez autre chose, une exception est levée ! Nous verrons ceci lorsque nous programmerons des objets...

Pour les curieux, voici ce que donnerait l'erreur :
Image utilisateur


Vous savez maintenant que pour lire un int, vous devez utiliser nextInt().
De façon générale, dites-vous que pour récupérer une type de variable, il vous suffit d'appeler next<Type de variable commençant par une majuscule> (rappelez-vous de la convention de nommage !).
Bon. C'est mon jour de bonté :
Code : Java
1
2
3
4
5
6
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
double d = sc.nextDouble();
long l = sc.nextLong();
byte b = sc.nextByte();
//etc


Attention : il y a un type de variable primitive qui n'est pas pris en compte par la classe Scanner ; il s'agit des variables de type char.


Voici comment on pourrait récupérer un caractère :
Code : Java
1
2
3
4
5
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);


Qu'est-ce que nous avons fait ici ?
Nous avons récupéré une chaîne de caractères, puis nous avons utilisé une méthode de l'objet String (ici, charAt(0) ) afin de récupérer le premier caractère saisi !
Même si vous tapez une longue chaîne de caractères, l'instruction charAt(0) ne renverra que le premier caractère...
Vous devez vous demander pourquoi charAt(0) et non charAt(1) ? Ne vous inquiétez pas, nous aborderons ce point lorsque nous verrons les tableaux...



Jusqu'à ce qu'on aborde les exceptions, je vous demande d'être rigoureux et de faire attention à ce que vous attendez comme donnée afin d'utiliser la bonne méthode.

Voilà : je pense que vous êtes fin prêts pour un QCM, maintenant !

Q.C.M.

Quelle classe doit-on utiliser pour pouvoir lire ce que nous tapons au clavier ?
Que ne faut-il surtout pas oublier lorsque nous voulons utiliser une classe n'appartenant pas au package java.lang ?
Qu'est-ce qu'un package ?
Qu'est-ce qui ne va pas, ici ?
Code : Java
1
2
3
4
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un entier : ");
double d = sc.nextInt();
System.out.println("Vous avez saisi le nombre : " + d);

Statistiques de réponses au QCM


J'espère que cette partie vous a plu et que vous êtes encore en forme...
A partir de maintenant, nous allons aborder les différentes instructions du langage.
Commençons par les conditions.
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 21/06/2006 à 15:02:22
Modifié : le 04/11/2008 à 19:33:09
Avancement : 0%
Licence : Copie non autorisée

18 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 411 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0567s (0.0359s)