I Java är Scanner en klass i java.util-paketet som används för att hämta indata för de primitiva typerna som int, double, etc. och strängar.
Att använda klassen Scanner i Java är det enklaste sättet att läsa indata i ett Java-program, men inte särskilt effektivt om du vill ha en inmatningsmetod för scenarier där tiden är en begränsning som i konkurrensutsatt programmering.
Java-skannerinmatningstyper
Skannerklass hjälper till att ta standardinmatningsströmmen i Java. Så vi behöver några metoder för att extrahera data från strömmen. Metoder som används för att extrahera data nämns nedan:
| Metod | Beskrivning |
|---|---|
| nextBoolean() | Används för att läsa booleskt värde |
| nextByte() | Används för att läsa bytevärde |
| nextDouble() | Används för att läsa dubbelt värde |
| nextFloat() | Används för att läsa flytvärde |
| nextInt() mylivecricket | Används för att läsa Int-värde |
| Används för att läsa linjevärde | |
| nextLong() | Används för att läsa Långt värde |
| nextShort() | Används för att läsa Kort värde |
Låt oss titta på kodavsnittet för att läsa data av olika datatyper.
Exempel på Java Scanner Class
Exempel 1:
Java
bash elif
// 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);> >}> }> |
>
>
Inmatning
Geek F 40 9876543210 9.9>
Produktion
Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>
Ibland måste vi kontrollera om nästa värde vi läser är av en viss typ eller om inmatningen har avslutats (EOF-markör påträffad).
Sedan kontrollerar vi om skannerns inmatning är av den typ vi vill ha med hjälp av hasNextXYZ() funktioner där XYZ är den typ vi är intresserade av. Funktionen returnerar true om skannern har en token av den typen, annars falsk. Till exempel, i koden nedan har vi använt hasNextInt(). För att leta efter en sträng använder vi hasNextLine(). På liknande sätt använder vi hasNext().charAt(0) för att leta efter ett enstaka tecken.
Exempel 2:
Låt oss titta på kodavsnittet för att läsa några siffror från konsolen och skriva ut deras medelvärde.
Java
osi referensmodell i nätverk
// 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.'>);> >}> >}> }> |
>
>
Inmatning
1 2 3 4 5>
Produktion
Mean: 3>
Viktiga punkter om Java Scanner Class
- För att skapa ett objekt av Scanner-klassen skickar vi vanligtvis det fördefinierade objektet System.in, som representerar standardinmatningsströmmen. Vi kan skicka ett objekt av klassen File om vi vill läsa indata från en fil.
- För att läsa numeriska värden för en viss datatyp XYZ, är funktionen nextXYZ(). Till exempel, för att läsa ett värde av typen kort, kan vi använda nextShort()
- För att läsa strängar använder vi nextLine().
- För att läsa ett enstaka tecken använder vi next().charAt(0). funktionen next() returnerar nästa token/ord i inmatningen som en sträng och funktionen charAt(0) returnerar det första tecknet i den strängen.
- Skannerklassen läser en hel rad och delar upp raden i tokens. Tokens är små element som har någon betydelse för Java-kompilatorn. Anta till exempel att det finns en inmatningssträng: Hur mår du
I det här fallet kommer skannerobjektet att läsa hela raden och dela upp strängen i tokens: Hur, är och du. Objektet itererar sedan över varje token och läser varje token med sina olika metoder.