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 |
java streng til int | 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.