logo

Scannerklasse in Java

In Java is Scanner een klasse in het java.util-pakket dat wordt gebruikt voor het verkrijgen van de invoer van de primitieve typen zoals int, double, enz. en strings.

Het gebruik van de klasse Scanner in Java is de gemakkelijkste manier om invoer in een Java-programma te lezen, maar niet erg efficiënt als u een invoermethode wilt voor scenario's waarin tijd een beperking is, zoals bij competitief programmeren.

Invoertypen voor Java-scanners

De scannerklasse helpt bij het nemen van de standaardinvoerstroom in Java. We hebben dus een aantal methoden nodig om gegevens uit de stream te extraheren. Methoden die worden gebruikt voor het extraheren van gegevens worden hieronder vermeld:



mijnflixer

Methode

Beschrijving

volgendeBoolean()

Wordt gebruikt voor het lezen van de Booleaanse waarde

volgendeByte()

Wordt gebruikt voor het lezen van de bytewaarde

volgendeDubbel()

Gebruikt voor het lezen van dubbele waarde

volgendeFloat()

Wordt gebruikt voor het lezen van de float-waarde

volgendeInt()

Gebruikt voor het lezen van de Int-waarde

volgenderegel()

Wordt gebruikt voor het lezen van lijnwaarde

volgendeLang()

Gebruikt voor het lezen van lange waarden

volgendeKort()

Gebruikt voor het lezen van korte waarde

Laten we naar het codefragment kijken om gegevens van verschillende gegevenstypen te lezen.

Voorbeelden van Java-scannerklasse

Voorbeeld 1:

Java

globale JavaScript-variabelen




// 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);> >}> }>

>

>

Invoer

Geek F 40 9876543210 9.9>

Uitvoer

Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>

Soms moeten we controleren of de volgende waarde die we lezen van een bepaald type is of dat de invoer is beëindigd (de EOF-markering is aangetroffen).

Vervolgens controleren we of de invoer van de scanner van het gewenste type is met behulp van hasNextXYZ()-functies waarbij XYZ het type is waarin we geïnteresseerd zijn. De functie retourneert true als de scanner een token van dat type heeft, anders false. In de onderstaande code hebben we bijvoorbeeld hasNextInt() gebruikt. Om te controleren op een string gebruiken we hasNextLine(). Op dezelfde manier gebruiken we hasNext().charAt(0) om te controleren op één enkel teken.

Voorbeeld 2:

Laten we naar het codefragment kijken om enkele getallen van de console te lezen en hun gemiddelde af te drukken.

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.'>);> >}> >}> }>

>

slice Java-array
>

Invoer

1 2 3 4 5>

Uitvoer

Mean: 3>

Belangrijke punten over de Java-scannerklasse

  • Om een ​​object van de klasse Scanner te maken, geven we meestal het vooraf gedefinieerde object System.in door, dat de standaardinvoerstroom vertegenwoordigt. We kunnen een object van de klasse File doorgeven als we invoer uit een bestand willen lezen.
  • Om numerieke waarden van een bepaald gegevenstype XYZ te lezen, is de te gebruiken functie nextXYZ(). Om bijvoorbeeld een waarde van het type short te lezen, kunnen we nextShort() gebruiken
  • Om tekenreeksen te lezen, gebruiken we nextLine().
  • Om één enkel teken te lezen, gebruiken we next().charAt(0). De functie next() retourneert het volgende token/woord in de invoer als een tekenreeks en de functie charAt(0) retourneert het eerste teken in die tekenreeks.
  • De klasse Scanner leest een hele regel en verdeelt de regel in tokens. Tokens zijn kleine elementen die een bepaalde betekenis hebben voor de Java-compiler. Stel dat er bijvoorbeeld een invoertekenreeks is: Hoe gaat het?
    In dit geval leest het scannerobject de hele regel en verdeelt de string in tokens: Hoe, bent en jij. Het object herhaalt vervolgens elk token en leest elk token met behulp van zijn verschillende methoden.