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