logo

Classe de scanner en Java

En Java, Scanner est une classe du package java.util utilisée pour obtenir l'entrée des types primitifs comme int, double, etc. et les chaînes.

L'utilisation de la classe Scanner en Java est le moyen le plus simple de lire les entrées dans un programme Java, mais pas très efficace si vous souhaitez une méthode de saisie pour des scénarios où le temps est une contrainte comme dans la programmation compétitive.

Types d'entrée du scanner Java

La classe Scanner permet de prendre le flux d'entrée standard en Java. Nous avons donc besoin de méthodes pour extraire les données du flux. Les méthodes utilisées pour extraire les données sont mentionnées ci-dessous :



alphabet avec des chiffres

Méthode

Description

suivantBooléen()

Utilisé pour lire la valeur booléenne

octet suivant()

Utilisé pour lire la valeur d'octet

suivantDouble()

Utilisé pour lire la valeur double

suivantFloat()

Utilisé pour lire la valeur flottante

suivantInt()

Utilisé pour lire la valeur Int

ligne suivante()

Utilisé pour lire la valeur de la ligne

suivantLong()

Utilisé pour lire la valeur longue

suivantShort()

'formule de maçon'
Utilisé pour lire la valeur courte

Examinons l'extrait de code pour lire des données de différents types de données.

Exemples de classe Java Scanner

Exemple 1:

Java




// Java program to read data of various types> // using Scanner class.> import> java.util.Scanner;> // Driver Class> public> class> ScannerDemo1 {> >// main function> >public> static> void> main(String[] args)> >{> >// Declare the object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// String input> >String name = sc.nextLine();> >// Character input> >char> gender = sc.next().charAt(>0>);> >// Numerical data input> >// byte, short and float can be read> >// using similar-named functions.> >int> age = sc.nextInt();> >long> mobileNo = sc.nextLong();> >double> cgpa = sc.nextDouble();> >// Print the values to check if the input was> >// correctly obtained.> >System.out.println(>'Name: '> + name);> >System.out.println(>'Gender: '> + gender);> >System.out.println(>'Age: '> + age);> >System.out.println(>'Mobile Number: '> + mobileNo);> >System.out.println(>'CGPA: '> + cgpa);> >}> }>

>

chaîne dans le tableau c
>

Saisir

Geek F 40 9876543210 9.9>

Sortir

Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>

Parfois, nous devons vérifier si la prochaine valeur que nous lisons est d'un certain type ou si la saisie est terminée (marqueur EOF rencontré).

Ensuite, nous vérifions si l'entrée du scanner est du type souhaité à l'aide des fonctions hasNextXYZ() où XYZ est le type qui nous intéresse. La fonction renvoie vrai si le scanner a un jeton de ce type, sinon faux. Par exemple, dans le code ci-dessous, nous avons utilisé hasNextInt(). Pour rechercher une chaîne, nous utilisons hasNextLine(). De même, pour vérifier un seul caractère, nous utilisons hasNext().charAt(0).

Exemple 2 :

Regardons l'extrait de code pour lire quelques nombres de la console et imprimer leur moyenne.

Java

entier une chaîne java




// Java program to read some values using Scanner> // class and print their mean.> import> java.util.Scanner;> public> class> ScannerDemo2 {> >public> static> void> main(String[] args)> >{> >// Declare an object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// Initialize sum and count of input elements> >int> sum =>0>, count =>0>;> >// Check if an int value is available> >while> (sc.hasNextInt()) {> >// Read an int value> >int> num = sc.nextInt();> >sum += num;> >count++;> >}> >if> (count>>0>) {> >int> mean = sum / count;> >System.out.println(>'Mean: '> + mean);> >}> >else> {> >System.out.println(> >'No integers were input. Mean cannot be calculated.'>);> >}> >}> }>

1 à 100 romains non
>

>

Saisir

1 2 3 4 5>

Sortir

Mean: 3>

Points importants concernant la classe Java Scanner

  • Pour créer un objet de la classe Scanner, nous transmettons généralement l'objet prédéfini System.in, qui représente le flux d'entrée standard. Nous pouvons passer un objet de classe File si nous voulons lire l'entrée d'un fichier.
  • Pour lire les valeurs numériques d'un certain type de données XYZ, la fonction à utiliser est nextXYZ(). Par exemple, pour lire une valeur de type short, on peut utiliser nextShort()
  • Pour lire des chaînes, nous utilisons nextLine().
  • Pour lire un seul caractère, nous utilisons next().charAt(0). La fonction next() renvoie le jeton/mot suivant dans l'entrée sous forme de chaîne et la fonction charAt(0) renvoie le premier caractère de cette chaîne.
  • La classe Scanner lit une ligne entière et la divise en jetons. Les jetons sont de petits éléments qui ont une signification pour le compilateur Java. Par exemple, supposons qu'il y ait une chaîne d'entrée : Comment allez-vous
    Dans ce cas, l'objet scanner lira la ligne entière et divisera la chaîne en jetons : Comment, êtes-vous et vous. L'objet parcourt ensuite chaque jeton et lit chaque jeton en utilisant ses différentes méthodes.