logo

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

næste linje()

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.