logo

Skannerklasse i Java

I Java er Scanner en klasse i java.util-pakken som brukes for å få input til de primitive typene som int, double, etc. og strenger.

Å bruke Scanner-klassen i Java er den enkleste måten å lese inndata i et Java-program, men ikke veldig effektivt hvis du vil ha en inndatametode for scenarier der tid er en begrensning som i konkurrerende programmering.

Java-skannerinndatatyper

Skannerklassen hjelper deg med å ta standardinndatastrømmen i Java. Så vi trenger noen metoder for å trekke ut data fra strømmen. Metoder som brukes for å trekke ut data er nevnt nedenfor:



Metode

Beskrivelse

nextBoolean()

Brukes for å lese boolsk verdi

nextByte()

Brukes for å lese Byte-verdi

nextDouble()

Brukes til å lese Dobbel verdi

nextFloat()

Brukes for å lese Float-verdi

nextInt()

Brukes for å lese Int-verdi

nextLine()

java-streng til int
Brukes til å lese linjeverdi

nextLong()

Brukes til å lese Lang verdi

nextShort()

Brukes til å lese Short value

La oss se på kodebiten for å lese data fra ulike datatyper.

Eksempler på Java Scanner Class

Eksempel 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);> >}> }>

>

>

Inndata

Geek F 40 9876543210 9.9>

Produksjon

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

Noen ganger må vi sjekke om den neste verdien vi leser er av en bestemt type eller om inndata er avsluttet (EOF-markør påtreffer).

Deretter sjekker vi om skannerens input er av den typen vi ønsker ved hjelp av hasNextXYZ() funksjoner der XYZ er typen vi er interessert i. Funksjonen returnerer true hvis skanneren har en token av den typen, ellers false. For eksempel, i koden nedenfor, har vi brukt hasNextInt(). For å se etter en streng bruker vi hasNextLine(). På samme måte, for å se etter et enkelt tegn, bruker vi hasNext().charAt(0).

Eksempel 2:

La oss se på kodebiten for å lese noen tall fra konsollen og skrive ut gjennomsnittet.

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.'>);> >}> >}> }>

>

>

Inndata

1 2 3 4 5>

Produksjon

Mean: 3>

Viktige punkter om Java Scanner Class

  • For å lage et objekt av skannerklassen, sender vi vanligvis det forhåndsdefinerte objektet System.in, som representerer standardinndatastrømmen. Vi kan sende et objekt av klassen File hvis vi ønsker å lese input fra en fil.
  • For å lese numeriske verdier for en bestemt datatype XYZ, er funksjonen som skal brukes nextXYZ(). For å lese en verdi av typen short, kan vi for eksempel bruke nextShort()
  • For å lese strenger bruker vi nextLine().
  • For å lese et enkelt tegn bruker vi next().charAt(0). next()-funksjonen returnerer neste token/ord i input som en streng og charAt(0)-funksjonen returnerer det første tegnet i den strengen.
  • Skannerklassen leser en hel linje og deler opp linjen i tokens. Tokens er små elementer som har en viss betydning for Java-kompilatoren. Anta for eksempel at det er en inndatastreng: Hvordan har du det
    I dette tilfellet vil skannerobjektet lese hele linjen og dele strengen inn i tokens: Hvordan, er og du. Objektet itererer deretter over hvert token og leser hvert token ved å bruke de forskjellige metodene.