1. Lecture depuis la console en utilisantSystem.in
Dans les leçons précédentes, nous nous sommes familiarisés avec les commandes d'affichage des informations à l'écran. Pour ce faire, nous avons utilisé l' System.out
objet et ses méthodes print()
et println()
. C'est simple et pratique.
Mais, comme vous l'avez probablement déjà deviné, afficher des informations à l'écran ne nous suffit pas. Le but de la plupart des programmes est de faire quelque chose d'utile pour l'utilisateur. Cela signifie qu'il est très souvent nécessaire que l'utilisateur puisse saisir des données au clavier.
Tout comme c'était le cas pour la sortie, nous avons également un objet spécial pour l'entrée de données — System.in
. Mais, malheureusement pour nous, ce n'est pas aussi pratique que nous le souhaiterions. Il nous permet de lire les données du clavier un caractère à la fois.
Pour améliorer cela, nous utiliserons une autre classe qui, associée à l' System.in
objet, nous donnera tout ce dont nous avons besoin. Depuis longtemps, Java propose des cours adaptés à toutes les occasions. Et nous allons apprendre à connaître l'un d'eux maintenant.
2. Scanner
classe
La Scanner
classe (nom complet : java.util.Scanner
) peut lire des données provenant de différentes sources, par exemple la console, des fichiers et Internet. Si nous voulons qu'il lise les données du clavier, nous devons passer l' System.in
objet en tant qu'argument qui servira de source de données. Et puis l'objet Scanner saura quoi en faire.
La lecture à partir du clavier à l'aide d'un Scanner
objet ressemblerait à ceci :
Code | Explication |
---|---|
|
Nous créons un Scanner objet. Nous lisons une ligne de texte au clavier. Nous lisons un numéro sur le clavier. |
Cela semble facile, mais est-ce vraiment si simple ?
Je pense que vous devez avoir un tas de questions, et maintenant nous allons y répondre.
Mais d'abord, montrons un exemple de programme complet qui utilise la Scanner
classe :
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
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éer un Scanner
objet
La première question est quelle est cette ligne Scanner console = new Scanner (System.in);
?
Cette ligne peut prêter à confusion, mais vous verrez tout le temps des choses similaires. Nous pensons donc qu'il est important d'expliquer ce qui se passe ici.
Rappelez-vous comment nous créons habituellement une variable avec du texte :
String str = "text";
D'abord, nous écrivons le type de la variable ( String
), puis son nom ( str
), et enfin, après le signe égal, nous écrivons la valeur.
Notre ligne déroutante est en fait la même :
Scanner console = new Scanner(System.in);
Tout ce qui se trouve à gauche du signe égal est la déclaration d'une variable nommée console
dont le type est Scanner
. Vous pouvez plutôt l'appeler s
ou scanner
ou même keyboard
. Ensuite, 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 tout est beaucoup plus clair.
Mais le code à droite du signe égal est un peu plus compliqué. Je fais maintenant référence à new Scanner(System.in);
Cela dit, il ne se passe rien de surnaturel ici non plus.
Dans ce code, nous disons à la machine Java : créez un nouvel objet (le new
mot-clé) dont le type est Scanner
, en passant l' System.in
objet comme source de données pour l' Scanner
objet nouvellement créé.
Après avoir exécuté toute cette ligne, nous aurons une Scanner
variable nommée console
que notre programme utilisera pour lire les données du clavier.
4. Liste des méthodes
Dans l'exemple ci-dessus, notre Scanner
console
variable stocke une référence à un Scanner
objet.
Pour appeler des méthodes sur un objet référencé par une variable, vous écrivez un point après le nom de la variable, suivi du nom de la méthode et des arguments. L'aspect général de la commande est le suivant :
variable.method(arguments);
Exemples:
System.out.println("Hello");
System.out.println(1);
Si vous ne prévoyez pas de passer d'arguments à une fonction, écrivez simplement des parenthèses vides :
variable.method();
Exemple:
System.out.println();
5. Entrée console
Lorsque nous avons un Scanner
objet, il est facile d'obtenir des données à partir du clavier.
Pour lire une ligne au clavier , vous avez besoin de cette commande :
String str = console.nextLine();
Lorsque l'exécution du programme atteint cette ligne, il s'arrêtera et attendra que l'utilisateur entre des données et appuie sur Entrée. Ensuite, tout ce que l'utilisateur a saisi est stocké dans la variable str
.
Pour lire un nombre au clavier , vous avez besoin de cette commande :
int number = console.nextInt();
Tout ici est comme la commande précédente. Lorsque l'exécution du programme atteint cette ligne, il s'arrêtera et attendra que l'utilisateur entre des données et appuie sur Entrée. Après cela, tout ce que l'utilisateur a saisi est converti en nombre et stocké dans la number
variable.
Si l'utilisateur a entré des données qui ne peuvent pas être converties en nombre entier, le programme générera une erreur et quittera.
Pour lire un nombre fractionnaire depuis le clavier , vous avez besoin de cette commande :
double number = console.nextDouble();
Cette instruction est très similaire à celle de la nextInt()
méthode, sauf qu'elle vérifie que les données saisies peuvent être converties en double
nombre.
Exemple de programme qui lit deux nombres au clavier et affiche leur somme à l'écran :
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int a = console.nextInt();
int b = console.nextInt();
System.out.println(a + b);
}
}
L'utilisateur peut saisir plusieurs nombres sur une même ligne en les séparant par des espaces : les méthodes de la Scanner
classe savent le faire. Cela dit, le programme lit les chiffres uniquement après que l'utilisateur a appuyé sur Enter
.
6. Autres méthodes de la Scanner
classe
Soit dit en passant, les méthodes ci-dessus ne sont pas tout ce que la Scanner
classe a à offrir. La liste complète des méthodes ressemble à ceci :
Méthode | Description |
---|---|
|
Lit les données et les convertit en unbyte |
|
Lit les données et les convertit en unshort |
|
Lit les données et les convertit en unint |
|
Lit les données et les convertit en unlong |
|
Lit les données et les convertit en unfloat |
|
Lit les données et les convertit en undouble |
|
Lit les données et les convertit en unboolean |
|
Lit un "jeton". Les jetons sont séparés par des espaces ou des pressions sur la touche Entrée |
|
Lit une ligne entière |
Il existe également des méthodes qui vous permettent de vérifier le jeton suivant dans l'entrée sans réellement le récupérer (afin de savoir quelle méthode utiliser pour le lire).
Méthode | Description |
---|---|
|
Y a-t-il un byte ? L'entrée peut-elle être convertie en un byte ? |
|
Y a-t-il un short ? L'entrée peut-elle être convertie en un short ? |
|
Y a-t-il un int ? L'entrée peut-elle être convertie en un int ? |
|
Y a-t-il un long ? L'entrée peut-elle être convertie en un long ? |
|
Y a-t-il un float ? L'entrée peut-elle être convertie en un float ? |
|
Y a-t-il un double ? L'entrée peut-elle être convertie en un double ? |
|
Y a-t-il un boolean ? L'entrée peut-elle être convertie en un boolean ? |
|
Existe-t-il un autre jeton ? |
|
Y a-t-il une autre ligne ? |
7. Lire les données d'une chaîne
Nous avons mentionné précédemment que la Scanner
classe peut lire des données provenant de diverses sources. L'une de ces sources est une chaîne de texte .
Cela ressemble à ceci :
String str = "text";
Scanner scanner = new Scanner(str);
Lors de la création de l' Scanner
objet, nous transmettons la chaîne str
au lieu de l' System.in
objet. Et maintenant, l' scanner
objet lira les données de la chaîne. Exemple:
Code programme : | Explication: |
---|---|
|
// un == 10 ;
// b == 20;
La sortie d'écran sera : |
GO TO FULL VERSION