logo

Skanneriluokka Javassa

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

seuraava rivi()

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ä.