Javassa Scanner on java.util-paketin luokka, jota käytetään primitiivityyppien, kuten int, double jne., ja merkkijonojen syöttämiseen.
Scanner-luokan käyttäminen Javassa on helpoin tapa lukea syötettä Java-ohjelmassa, joskaan ei kovin tehokasta, jos haluat syöttötavan skenaarioihin, joissa aika on rajoite, kuten kilpailevassa ohjelmoinnissa.
Java-skannerin syöttötyypit
Scanner-luokka auttaa ottamaan Java-standardin syöttövirran. Joten tarvitsemme joitain menetelmiä tietojen poimimiseksi virrasta. Tietojen poimimiseen käytetyt menetelmät on mainittu alla:
| Menetelmä | Kuvaus |
|---|---|
| nextBoolean() | Käytetään Boolen arvon lukemiseen |
| nextByte() | Käytetään tavun arvon lukemiseen |
| nextDouble() | Käytetään kaksinkertaisen arvon lukemiseen |
| nextFloat() joka perusti koulun | Käytetään liukuarvon lukemiseen |
| nextInt() | Käytetään Int-arvon lukemiseen |
| Käytetään rivin arvon lukemiseen | |
| seuraavaLong() | Käytetään pitkän arvon lukemiseen |
| nextShort() sanan rivitys css | Käytetään lyhyen arvon lukemiseen |
Katsotaanpa koodinpätkää eri tietotyyppien tietojen lukemiseksi.
Esimerkkejä Java Scanner Classista
Esimerkki 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);> >}> }> |
>
>
Syöte
Geek F 40 9876543210 9.9>
Lähtö
Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>
Joskus meidän on tarkistettava, onko seuraava lukemamme arvo tiettyä tyyppiä vai onko syöttö päättynyt (EOF-merkki havaittu).
eol pythonissa
Sitten tarkistamme, onko skannerin syöte haluamaamme tyyppiä hasNextXYZ()-funktioiden avulla, joissa XYZ on meitä kiinnostava tyyppi. Funktio palauttaa tosi, jos skannerilla on tämän tyyppinen tunnus, muuten false. Esimerkiksi alla olevassa koodissa olemme käyttäneet hasNextInt(). Merkkijonon tarkistamiseksi käytämme hasNextLine() Vastaavasti yksittäisen merkin tarkistamiseen käytämme hasNext().charAt(0).
Esimerkki 2:
Katsotaanpa koodinpätkää lukeaksemme joitain lukuja konsolista ja tulostaaksemme niiden keskiarvon.
Java
do while silmukan 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>>> >int> mean = sum / count;> >System.out.println(>'Mean: '> + mean);> >}> >else> {> >System.out.println(> >'No integers were input. Mean cannot be calculated.'>);> >}> >}> }> |
>
>
Syöte
1 2 3 4 5>
Lähtö
Mean: 3>
Tärkeitä seikkoja Java Scanner Classista
- Luodaksemme Scanner-luokan objektin, välitämme yleensä ennalta määritellyn objektin System.in, joka edustaa vakiosyöttövirtaa. Voimme välittää luokan File objektin, jos haluamme lukea syötteen tiedostosta.
- Tietyn tietotyypin XYZ numeeristen arvojen lukemiseksi käytettävä funktio on nextXYZ(). Esimerkiksi short-tyypin arvon lukemiseksi voimme käyttää nextShort()
- Merkkijonojen lukemiseen käytämme nextLine().
- Yksittäisen merkin lukemiseksi käytämme next().charAt(0). next()-funktio palauttaa syötteen seuraavan merkin/sanan merkkijonona ja charAt(0)-funktio palauttaa kyseisen merkkijonon ensimmäisen merkin.
- Scanner-luokka lukee kokonaisen rivin ja jakaa rivin tokeneihin. Tokenit ovat pieniä elementtejä, joilla on jokin merkitys Java-kääntäjälle. Oletetaan esimerkiksi, että on syötemerkkijono: Kuinka voit
Tässä tapauksessa skanneriobjekti lukee koko rivin ja jakaa merkkijonon tokeneihin: How, are and you. Tämän jälkeen objekti iteroi jokaisen tunnuksen yli ja lukee jokaisen merkin käyttämällä sen eri menetelmiä.