A Java, Scanner és una classe del paquet java.util que s'utilitza per obtenir l'entrada dels tipus primitius com int, double, etc. i strings.
L'ús de la classe Scanner a Java és la manera més fàcil de llegir l'entrada en un programa Java, encara que no és molt eficient si voleu un mètode d'entrada per a escenaris on el temps és una limitació com en la programació competitiva.
Tipus d'entrada de l'escàner Java
La classe d'escàner ajuda a prendre el flux d'entrada estàndard a Java. Per tant, necessitem alguns mètodes per extreure dades del flux. Els mètodes utilitzats per extreure dades s'esmenten a continuació:
| Mètode | Descripció |
|---|---|
| nextBoolean() | S'utilitza per llegir el valor booleà |
| nextByte() | S'utilitza per llegir el valor del byte |
| següentDoble() | S'utilitza per llegir el valor doble |
| nextFloat() xd significat | S'utilitza per llegir el valor flotant |
| nextInt() | S'utilitza per llegir el valor Int |
| S'utilitza per llegir el valor de la línia | |
| següentLlarg() | S'utilitza per llegir el valor llarg |
| nextShort() quants milions hi ha en mil milions | S'utilitza per llegir Valor curt |
Vegem el fragment de codi per llegir dades de diversos tipus de dades.
Exemples de classe d'escàner Java
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);> >}> }> |
>
>
Entrada
Geek F 40 9876543210 9.9>
Sortida
Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>
De vegades, hem de comprovar si el següent valor que llegim és d'un determinat tipus o si l'entrada ha acabat (s'ha trobat el marcador EOF).
mètode igual a java
Aleshores, comprovem si l'entrada de l'escàner és del tipus que volem amb l'ajuda de les funcions hasNextXYZ() on XYZ és el tipus que ens interessa. La funció retorna true si l'escàner té un testimoni d'aquest tipus, en cas contrari, fals. Per exemple, al codi següent, hem utilitzat hasNextInt(). Per comprovar si hi ha una cadena, utilitzem hasNextLine(). De la mateixa manera, per comprovar si hi ha un sol caràcter, utilitzem hasNext().charAt(0).
Exemple 2:
Mirem el fragment de codi per llegir alguns números de la consola i imprimir-ne la mitjana.
Java
mamta kulkarni actor
// 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.'>);> >}> >}> }> |
>
>
Entrada
1 2 3 4 5>
Sortida
Mean: 3>
Aspectes importants sobre Java Scanner Class
- Per crear un objecte de la classe Scanner, normalment passem l'objecte predefinit System.in, que representa el flux d'entrada estàndard. Podem passar un objecte de classe File si volem llegir l'entrada d'un fitxer.
- Per llegir valors numèrics d'un determinat tipus de dades XYZ, la funció a utilitzar és nextXYZ(). Per exemple, per llegir un valor de tipus short, podem utilitzar nextShort()
- Per llegir cadenes, fem servir nextLine().
- Per llegir un sol caràcter, fem servir next().charAt(0). La funció next() retorna el següent testimoni/paraula a l'entrada com a cadena i la funció charAt(0) retorna el primer caràcter d'aquesta cadena.
- La classe Scanner llegeix una línia sencera i la divideix en fitxes. Els fitxes són petits elements que tenen algun significat per al compilador Java. Per exemple, suposem que hi ha una cadena d'entrada: Com estàs?
En aquest cas, l'objecte d'escàner llegirà tota la línia i dividirà la cadena en fitxes: Com, ets i tu. A continuació, l'objecte itera sobre cada testimoni i llegeix cada testimoni utilitzant els seus diferents mètodes.