Je me doute qu'il vous tardait de pouvoir communiquer avec votre application...
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 : Java1 | 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 !
Maintenant, regardez tout au dessus de votre classe, au dessus de la déclaration de celle-ci, vous devez avoir une ligne :
Code : Java1 | 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.
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 : Java1
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 !
Retournons à notre morceau de code, pour mémoire :
Code : Java1 | Scanner sc = new Scanner(System.in);
|
Afin de vous préparer à saisir des informations, veuillez afficher un message à l'écran ; nous avons donc :
Code : Java1
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 : Java1
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 !
Alors ? Heureux ?
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 : Java1
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 :
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 : Java1
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 : Java1
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 !
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.