Scanner klasse i Java
I Java er Scanner en klasse i java.util-pakken, der bruges til at hente input fra de primitive typer som int, double osv. og strenge.
Brug af Scanner-klassen i Java er den nemmeste måde at læse input i et Java-program på, dog ikke særlig effektiv, hvis du ønsker en inputmetode til scenarier, hvor tid er en begrænsning som i konkurrerende programmering.
Java-scannerinputtyper
Scanner-klassen hjælper med at tage standard input-stream i Java. Så vi har brug for nogle metoder til at udtrække data fra strømmen. Metoder, der bruges til at udtrække data, er nævnt nedenfor:
| Metode | Beskrivelse |
|---|---|
| nextBoolean() | Bruges til at læse boolsk værdi |
| nextByte() | Bruges til at læse byteværdi |
| nextDouble() | Bruges til at læse Dobbelt værdi |
| nextFloat() | Bruges til at aflæse Float-værdi |
| nextInt() | Bruges til at læse Int-værdi |
| Bruges til at aflæse Linjeværdi | |
| nextLong() | Bruges til at læse Lang værdi |
| nextShort() | Bruges til at læse kort værdi |
Lad os se på kodestykket for at læse data af forskellige 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);> > }> }> |
Input
Geek F 40 9876543210 9.9
Produktion
Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9
Nogle gange er vi nødt til at kontrollere, om den næste værdi, vi læser, er af en bestemt type, eller om input er afsluttet (EOF-markør stødt på).
Derefter tjekker vi, om scannerens input er af den type, vi ønsker, ved hjælp af hasNextXYZ()-funktioner, hvor XYZ er den type, vi er interesseret i. Funktionen returnerer sand, hvis scanneren har et token af den type, ellers falsk. For eksempel har vi i nedenstående kode brugt hasNextInt(). For at tjekke for en streng bruger vi hasNextLine(). Tilsvarende bruger vi hasNext().charAt(0) for at tjekke for et enkelt tegn.
Eksempel 2:
Lad os se på kodestykket for at læse nogle tal fra konsollen og udskrive deres middelværdi.
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.'> );> > }> > }> }> |
Input
1 2 3 4 5
Produktion
Mean: 3
Vigtige punkter om Java Scanner Class
- For at oprette et objekt af Scanner-klassen sender vi normalt det foruddefinerede objekt System.in, som repræsenterer standardinputstrømmen. Vi kan sende et objekt af klassen File, hvis vi ønsker at læse input fra en fil.
- For at læse numeriske værdier af en bestemt datatype XYZ, er den funktion, der skal bruges, nextXYZ(). For at læse en værdi af typen short kan vi f.eks. bruge nextShort()
- For at læse strenge bruger vi nextLine().
- For at læse et enkelt tegn bruger vi next().charAt(0). next()-funktionen returnerer det næste token/ord i input som en streng, og charAt(0)-funktionen returnerer det første tegn i denne streng.
- Scanner-klassen læser en hel linje og opdeler linjen i tokens. Tokens er små elementer, der har en vis betydning for Java-kompileren. Antag for eksempel, at der er en inputstreng: Hvordan har du det
I dette tilfælde vil scannerobjektet læse hele linjen og opdele strengen i tokens: Hvordan, er og dig. Objektet itererer derefter over hvert token og læser hvert token ved hjælp af dets forskellige metoder.