Classe Scanner Java
java.util.Scanner est une nouvelle fonctionnalité de Java 5. Nous pouvons obtenir la saisie utilisateur via la classe Scanner.
Voici la syntaxe de base pour créer un objet Scanner :
Ensuite, nous démontrons une saisie de données simple et obtenons la chaîne d'entrée via les méthodes next() et nextLine() de la classe Scanner. Avant la lecture, nous devons généralement utiliser hasNext et hasNextLine pour déterminer s'il reste des données d'entrée :
Utilisation de la méthode next :
Code du fichier ScannerDemo.java :
La sortie après exécution du programme ci-dessus est :
$ javac ScannerDemo.java $ java ScannerDemo next方式接收: example com 输入的数据为:example
On peut voir que la chaîne com n'a pas été affichée. Passons maintenant à nextLine.
Utilisation de la méthode nextLine :
Code du fichier ScannerDemo.java :
La sortie après exécution du programme ci-dessus est :
$ javac ScannerDemo.java $ java ScannerDemo nextLine方式接收: example com 输入的数据为:example com
On peut voir que la chaîne com est affichée.
Différence entre next() et nextLine()
next():
- 1. La saisie ne peut être terminée qu'après la lecture de caractères valides.
- 2. Pour les espaces blancs rencontrés avant des caractères de saisie valides, la méthode next() les supprime automatiquement.
- 3. Ce n'est qu'après avoir saisi des caractères valides que les espaces blancs qui les suivent seront utilisés comme séparateur ou terminateur.
- next() ne peut pas récupérer une chaîne contenant des espaces.
nextLine():
- 1. La touche Entrée est le terminateur, c'est-à-dire que la méthode nextLine() renvoie tous les caractères avant que la touche Entrée ne soit saisie.
- 2. Elle peut obtenir des espaces blancs.
Si vous souhaitez saisir des données de type int ou float, la classe Scanner le prend également en charge, mais avant la saisie, il est préférable d'utiliser la méthode hasNextXxx() pour valider, puis d'utiliser nextXxx() pour lire :
Code du fichier ScannerDemo.java :
La sortie après exécution du programme ci-dessus est :
$ javac ScannerDemo.java $ java ScannerDemo 输入整数:12 整数数据:12 输入小数:1.2 小数数据:1.2
Dans l'exemple ci-dessous, nous pouvons saisir plusieurs nombres et calculer leur somme et. Chaque nombre est saisi en appuyant. Saisissez l'entrée en entrant un non-nombre, puis affichez le résultat :
Code du fichier ScannerDemo.java :
La sortie après l'exécution du programme ci-dessus (entrez une valeur non numérique pour terminer la saisie) :
$ javac ScannerDemo.java $ java ScannerDemo 请输入数字: 12 23 15 21.4 end 4个数的和为71.4 4个数的平均值是17.85
Méthodes courantes
| Méthode | Description |
|---|---|
| Constructeurs | |
Scanner(File source) |
Créer un Scanner à partir d'un fichier |
Scanner(InputStream source) |
Créer un Scanner à partir d'un flux d'entrée |
Scanner(String source) |
Créer un Scanner à partir d'une chaîne |
| Méthodes de saisie de base | |
boolean hasNext() |
Vérifier qu'il y a un jeton suivant (séparé par des espaces) |
String next() |
Lire le jeton suivant (chaîne) |
boolean hasNextLine() |
Vérifier s'il y a une ligne suivante |
String nextLine() |
Lire le contenu de la ligne suivante |
| Méthodes de vérification de type | |
boolean hasNextInt() |
Vérifier si le jeton suivant est un entier |
boolean hasNextDouble() |
Vérifier si le jeton suivant est un double |
boolean hasNextBoolean() |
Vérifier si le jeton suivant est un booléen |
| Méthodes de lecture de type | |
int nextInt() |
Lire l'entier suivant |
double nextDouble() |
Lire le double suivant |
boolean nextBoolean() |
Lire le booléen suivant |
long nextLong() |
Lire l'entier long suivant |
float nextFloat() |
Lire le float suivant |
short nextShort() |
Lire l'entier court suivant |
byte nextByte() |
Lire l'octet suivant |
| Contrôle du délimiteur | |
Scanner useDelimiter(String pattern) |
Définir le motif de délimiteur |
Scanner useDelimiter(Pattern pattern) |
Définir le délimiteur à l'aide d'une expression régulière |
String delimiter() |
Renvoyer le motif de délimiteur actuellement utilisé |
| Autres méthodes | |
void close() |
Fermer le scanner |
Scanner skip(Pattern pattern) |
Ignorer l'entrée correspondant au modèle spécifié |
Scanner skip(String pattern) |
Ignorer l'entrée correspondant à la chaîne spécifiée |
String findInLine(Pattern pattern) |
Rechercher le modèle spécifié dans la ligne actuelle |
String findInLine(String pattern) |
Rechercher la chaîne spécifiée dans la ligne actuelle |
Scanner reset() |
Réinitialiser le scanner |
Locale locale() |
Renvoyer les paramètres régionaux actuellement utilisés par le scanner |
Scanner useLocale(Locale locale) |
Définir les paramètres régionaux du scanner |
Pour plus de contenu, consultez la documentation de l'API :https://www.example.com/manual/jdk11api/java.base/java/util/Scanner.html。
Autres extensions