java scanner class tutorial with examples
Dans ce didacticiel, nous allons discuter de la façon d'importer et d'utiliser la classe Scanner de Java avec ses diverses méthodes, l'API Scanner et des exemples:
Nous avons déjà vu les méthodes standard d'entrée-sortie utilisées par Java pour lire / écrire des données sur les périphériques d'E / S standard.
Java fournit encore un autre mécanisme pour lire les entrées utilisateur. C'est la classe Scanner. Bien qu'elle ne soit pas très efficace, la classe Scanner est le moyen le plus simple et préféré de lire les entrées dans les programmes Java.
=> Consultez TOUS les didacticiels Java ici.
Ce que vous apprendrez:
Classe de scanner Java: un aperçu détaillé
La classe Scanner est principalement utilisée pour scanner l'entrée et lire l'entrée des types de données primitifs (intégrés) comme int, decimal, double, etc. La classe Scanner renvoie essentiellement l'entrée tokenisée basée sur un modèle de délimiteur. Ainsi, en général, si vous voulez lire le type dt, vous pouvez utiliser la fonction nextdt () pour lire l'entrée.
Une classe Scanner implémente les interfaces Iterator (string), Closeable et AutoCloseable.
Explorons maintenant les détails de cette classe Scanner.
Importer un scanner
La classe Scanner appartient au package «java.util». Par conséquent, pour utiliser la classe Scanner dans votre programme, vous devez importer ce package comme suit.
import java.util. *
OU
import java.util.Scanner;
L'une ou l'autre des instructions ci-dessus importera la classe Scanner et ses fonctionnalités dans votre programme.
Classe de scanner Java
Une fois la classe Scanner importée dans le programme Java, vous pouvez l'utiliser pour lire l'entrée de différents types de données. Selon que vous souhaitez lire l'entrée à partir de l'entrée standard ou du fichier ou du canal, vous pouvez transmettre l'objet prédéfini approprié à l'objet Scanner.
Vous trouverez ci-dessous un exemple de base d'utilisation de la classe Scanner.
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
Production:
Dans le programme ci-dessus, nous avons fourni le «System.in» (entrée standard) comme objet lors de la création d'un objet de classe Scanner. Ensuite, nous lisons une chaîne d'entrée à partir de l'entrée standard.
API du scanner (constructeurs et méthodes)
Dans cette section, nous explorerons en détail l'API de la classe Scanner. La classe Scanner contient divers constructeurs surchargés pour accueillir diverses méthodes d'entrée telles que System.in, l'entrée de fichier, le chemin, etc.
Le tableau suivant donne le prototype et la description de chacun des constructeurs de classe Scanner.
copier le DVD sur le disque dur gratuitement
Ne pas | Prototype | Description |
---|---|---|
7 | Scanner (source du chemin, chaîne charsetName) | Ce constructeur construit un nouveau Scanner qui scanne le fichier spécifié et produit les valeurs |
1 | Scanner (source InputStream) | Ce constructeur construit un nouveau Scanner qui scanne le nouveau InputStream, source et produit les valeurs |
deux | Scanner (source InputStream, chaîne charsetName) | Ce constructeur construit un nouveau Scanner qui scanne le nouveau InputStream, source et produit les valeurs |
3 | Scanner (source de fichier) | Ce constructeur construit un nouveau Scanner qui scanne le fichier spécifié et produit les valeurs |
4 | Scanner (source du fichier, chaîne charsetName) | Ce constructeur construit un nouveau Scanner qui scanne le fichier spécifié et produit les valeurs |
5 | Scanner (source de chaîne) | Ce constructeur construit un nouveau Scanner qui scanne la chaîne spécifiée et produit les valeurs |
6 | Scanner (source du chemin) | Ce constructeur construit un nouveau Scanner qui scanne le fichier spécifié et produit les valeurs |
8 | Scanner (source lisible) | Ce constructeur construit un nouveau Scanner qui scanne la source spécifiée et produit les valeurs |
9 | Scanner (source ReadableByteChannel) | Ce constructeur construit un nouveau Scanner qui scanne le canal spécifié et produit les valeurs |
dix | Scanner (source ReadableByteChannel, chaîne charsetName) | Ce constructeur construit un nouveau Scanner qui scanne le canal spécifié et produit les valeurs |
Tout comme les constructeurs, la classe Scanner fournit également de nombreuses méthodes utilisées pour analyser et lire l'entrée. Il fournit diverses méthodes booléennes qui vous permettent de vérifier si le jeton suivant dans l'entrée est un jeton d'un type de données particulier.
Notez que pour chaque constructeur, vous pouvez fournir un seul argument avec l'objet d'entrée prédéfini ou deux arguments composés d'un objet d'entrée et d'un jeu de caractères prédéfinis. Dans le cas d'un argument, le jeu de caractères par défaut est utilisé.
Il existe également des méthodes pour récupérer des jetons de chaque type de données.
D'autres méthodes incluent celles pour définir les paramètres régionaux, la base, les modèles de correspondance, fermer le scanner, etc.
Le tableau suivant donne le prototype et la description de chacune des méthodes de base du scanner.
Ne pas | Prototype | Description |
---|---|---|
7 | Booléen hasNextFloat () | Vérifie si le jeton suivant dans l'entrée Scanner est de type flottant |
1 | Booléen hasNext () | Renvoie vrai s'il y a un autre jeton dans l'entrée du scanner |
deux | Boolean hasNextBigDecimal () | Vérifie si le jeton suivant dans l'entrée Scanner est de type bigDecimal. |
3 | Boolean hasNextBigInteger () | Vérifie si le jeton suivant dans l'entrée Scanner est de type bigInteger |
4 | Boolean hasNextBoolean () | Vérifie si le jeton suivant dans l'entrée Scanner est de type booléen |
5 | Booléen hasNextByte () | Vérifie si le jeton suivant dans l'entrée Scanner est de type Byte |
6 | Booléen hasNextDouble () | Vérifie si le jeton suivant dans l'entrée Scanner est de type double |
8 | Booléen hasNextInt () | Vérifie si le jeton suivant dans l'entrée Scanner est de type entier |
9 | Booléen hasNextLine () | Vérifie si le jeton suivant dans l'entrée du scanner est une autre ligne |
dix | Booléen hasNextLong () | Vérifie si le jeton suivant dans l'entrée Scanner est de type long |
Onze | Booléen hasNextShort () | Vérifie si le jeton suivant dans l'entrée du scanner est de type court |
12 | Chaîne suivant () | Analyse l'entrée pour le prochain jeton complet |
13 | BigDecimal suivantBigDecimal () | Analyse l'entrée pour le prochain jeton BigDecimal |
14 | BigInteger suivantBigInteger () | Analyse l'entrée pour le prochain jeton BigInteger |
quinze | Boolean nextBoolean () | Analyse l'entrée pour le prochain jeton booléen |
16 | Octet suivantByte () | Analyse l'entrée pour le prochain jeton d'octet |
17 | Double suivantDouble () | Analyse l'entrée pour le prochain jeton Double |
18 | Flotter suivantFloat () | Analyse l'entrée pour le prochain jeton flottant |
19 | Int nextInt() | Analyse l'entrée pour le prochain jeton entier |
vingt | Chaîne nextLine () | Obtenez la chaîne d'entrée ignorée de l'objet Scanner |
vingt-et-un | Long suivantLong () | Analyse l'entrée pour le prochain jeton entier long |
22 | Court suivant Court () | Analyse l'entrée pour le prochain jeton entier court |
2. 3 | Réinitialisation du scanner () | Réinitialisez le scanner actuellement utilisé |
24 | Saut du scanner () | Ignorer les délimiteurs et ignorer l'entrée qui correspond au modèle donné |
25 | Utilisation du scannerDelimiter () | Définir le modèle de délimitation sur le modèle spécifié |
26 | Utilisation du scannerLocale () | Définir l'objet de paramètres régionaux Scanners avec les paramètres régionaux donnés |
27 | Utilisation du scannerRadix () | Définir la base spécifiée comme base par défaut pour Scanner |
28 | Base int () | Renvoie la base par défaut du scanner actuel |
29 | void remove () | Peut être utilisé lorsque Iterator ne prend pas en charge l'opération de suppression |
30 | Jetons de flux () | Renvoie un flux de jetons séparés par un délimiteur du Scanner actuel |
31 | Chaîne toString () | La représentation sous forme de chaîne de retour d'un Scanner donné actuellement utilisé |
32 | IOException ioException () | Renvoie la dernière IOException lancée par l'objet lisible de Scanner |
33 | Flux findALL () | Renvoie le flux des résultats de correspondance qui correspondent au modèle donné |
3. 4 | Chaîne findInLine () | Trouvez l'occurrence suivante du modèle à partir de la chaîne donnée; ignore les délimiteurs |
35 | Chaîne findWithinHorizon () | Trouvez l'occurrence suivante du modèle à partir de la chaîne donnée; ignore les délimiteurs |
36 | Délimiteur de motif () | Renvoie le motif utilisé par le scanner actuel |
37 | Fermer vide () | Ferme le scanner |
38 | MatchResult match () | Renvoie le résultat correspondant de la dernière opération d'analyse |
39 | Local local () | Renvoie les paramètres régionaux du scanner actuel |
Vérifier ici pour en savoir plus sur les méthodes du scanner.
Comment utiliser le scanner en Java?
Maintenant que vous avez vu les différents constructeurs et méthodes fournis par la classe Scanner, implémentons maintenant certains des exemples pour montrer comment utiliser la classe Scanner en Java.
L'implémentation suivante montre l'utilisation de la classe Scanner pour lire l'entrée de System.in, c'est-à-dire l'entrée standard.
Ici, nous utilisons un objet System.in prédéfini pour créer un objet Scanner. L'utilisateur est ensuite invité à entrer le nom, la classe et le pourcentage. Tous ces détails sont lus à l'aide de l'objet de classe Scanner.
Notez les méthodes utilisées par les objets Scanner pour lire différents types d'entrée. Comme le nom est une chaîne, l'objet Scanner utilise la méthode next (). Pour l'entrée de classe, il utilise nextInt () tandis que pour le pourcentage, il utilise nextFloat ().
De cette manière, vous pouvez facilement séparer l'entrée lors de la lecture.
La sortie du programme montre l'entrée en cours de saisie et les informations affichées.
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
Production:
Chaîne du scanner
Comme déjà mentionné, vous pouvez utiliser divers objets prédéfinis lors de la création d'un objet Scanner. Cela signifie que vous pouvez lire l'entrée à partir de l'entrée standard, des fichiers et de divers canaux d'E / S ou également à partir de chaînes.
Lorsqu'une entrée de chaîne est utilisée, vous pouvez également utiliser des expressions régulières à l'intérieur.
Les exemples suivants montrent le programme dans lequel Scanner utilise une chaîne comme entrée. Cette entrée est ensuite analysée et les jetons séparés par la lecture de chaque jeton.
Les jetons lus sont ensuite affichés dans la sortie.
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
Production:
Fermer le scanner
La classe Java Scanner utilise la méthode «Close ()» pour fermer le scanner. La classe Scanner implémente également en interne une interface Closeable et donc si le Scanner n'est pas déjà fermé, l'interface Readable sous-jacente appelle sa méthode close.
C'est une bonne pratique de programmation de fermer explicitement le Scanner en utilisant la méthode Close () une fois que vous avez fini de l'utiliser.
Noter: Si l'objet Scanner est fermé et qu'une tentative de recherche est effectuée, il en résulte «IllegalStateException».
Questions fréquemment posées
Q # 1) Qu'est-ce que la classe Scanner en Java?
Répondre: La classe Scanner fait partie du package «java.util» de Java et est utilisée pour lire l'entrée de différents types de données primitives comme int, float, strings, etc.
comment trouver la clé réseau sur le routeur
Q # 2) Quelle est la différence entre les méthodes next () et nextLine () de la classe Scanner?
Répondre: La méthode next () lit l'entrée jusqu'à l'espace et place le curseur sur la même ligne après la lecture de l'entrée. La méthode nextLine () lit cependant toute la ligne d'entrée jusqu'à la fin de la ligne, y compris les espaces.
Q # 3) Qu'est-ce que hasNext () en Java?
Répondre: La méthode hasNext () est l'une des méthodes du scanner Java. Cette méthode renvoie true si le scanner a un autre jeton dans l'entrée.
Q # 4) Avez-vous besoin de fermer une classe Scanner?
Répondre: Il est préférable mais pas obligatoire de fermer la classe Scanner comme si elle n'était pas fermée, l'interface lisible sous-jacente de la classe Scanner fait le travail pour vous. Le compilateur peut cependant faire clignoter un avertissement s'il n'est pas fermé.
Donc, comme bonne pratique de programmation, fermez toujours le scanner.
Q # 5) Quel est le but de «system.in» dans la classe Scanner?
Répondre: En utilisant «System.in» dans la classe Scanner, vous autorisez le scanner à lire le clavier connecté aux données d'entrée standard.
Conclusion
Dans ce tutoriel, nous avons vu la classe Scanner et tous ses détails, y compris l'API et l'implémentation. La classe Scanner est utilisée pour lire les données d'entrée à partir de divers supports tels que les entrées standard, les fichiers, les canaux IO, les chaînes avec / sans expressions régulières, etc.
Bien que le scanner ne soit pas un moyen très efficace de lire les entrées, c'est l'un des moyens les plus simples. Le Scanner vous permet de lire l'entrée de divers types de données primitifs comme int, float, strings, etc. Lorsque vous utilisez des chaînes comme objet d'entrée pour la classe Scanner, vous pouvez également utiliser des expressions régulières avec lui.
La classe Scanner vous permet également de lire l'entrée en faisant correspondre un modèle ou un délimiteur.
Pour conclure, l'utilisation de la classe Scanner en Java reste le moyen le plus simple et préféré de lire les entrées.
=> Consultez le guide de formation Perfect Java ici.
lecture recommandée
- Qu'est-ce que le vecteur Java | Tutoriel de classe vectorielle Java avec des exemples
- Tutoriel sur les classes Java Array - Classe java.util.Arrays avec exemples
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Tutoriel sur l'interface Java et les classes abstraites avec des exemples
- Tutoriel de réflexion Java avec des exemples
- Jagged Array In Java - Tutoriel avec des exemples
- Tutoriel Java Array Length avec des exemples de code
- Tutoriel Java String | Méthodes de chaîne Java avec exemples