logo

Skannerklass i Java

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

nextLine()

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.