logo

Scannerklasse in Java

In Java ist Scanner eine Klasse im Paket java.util, die zum Abrufen der Eingabe der primitiven Typen wie int, double usw. und Strings verwendet wird.

Die Verwendung der Scanner-Klasse in Java ist die einfachste Möglichkeit, Eingaben in einem Java-Programm zu lesen, allerdings nicht sehr effizient, wenn Sie eine Eingabemethode für Szenarien benötigen, in denen Zeit eine Einschränkung darstellt, wie bei der Wettbewerbsprogrammierung.

Linux-Ordner umbenennen

Java-Scanner-Eingabetypen

Die Scannerklasse hilft dabei, den Standardeingabestream in Java zu verwenden. Wir benötigen also einige Methoden, um Daten aus dem Stream zu extrahieren. Die zum Extrahieren von Daten verwendeten Methoden sind nachstehend aufgeführt:



Methode

Beschreibung

nextBoolean()

Wird zum Lesen des booleschen Werts verwendet

nextByte()

Wird zum Lesen des Bytewerts verwendet

nextDouble()

Wird zum Lesen des Double-Werts verwendet

nextFloat()

Wird zum Lesen des Float-Werts verwendet

nextInt()

Wird zum Lesen des Int-Werts verwendet

nächste Zeile()

Wird zum Lesen des Zeilenwerts verwendet

nextLong()

Wird zum Lesen des Long-Werts verwendet

nextShort()

Wird zum Lesen des Kurzwerts verwendet

Schauen wir uns den Codeausschnitt zum Lesen von Daten verschiedener Datentypen an.

Beispiele für die Java-Scanner-Klasse

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

>

>

Eingang

Geek F 40 9876543210 9.9>

Ausgabe

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

Manchmal müssen wir prüfen, ob der nächste gelesene Wert von einem bestimmten Typ ist oder ob die Eingabe beendet wurde (EOF-Marker gefunden).

Dann prüfen wir mit Hilfe der hasNextXYZ()-Funktionen, ob die Eingabe des Scanners von dem Typ ist, den wir wollen, wobei XYZ der Typ ist, an dem wir interessiert sind. Die Funktion gibt true zurück, wenn der Scanner ein Token dieses Typs hat, andernfalls false. Im folgenden Code haben wir beispielsweise hasNextInt() verwendet. Um nach einer Zeichenfolge zu suchen, verwenden wir hasNextLine(). Um nach einem einzelnen Zeichen zu suchen, verwenden wir gleichermaßen hasNext().charAt(0).

Beispiel 2:

Schauen wir uns den Codeausschnitt an, um einige Zahlen aus der Konsole zu lesen und ihren Mittelwert auszugeben.

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

>

>

Java-Hallo-Programm

Eingang

1 2 3 4 5>

Ausgabe

Mean: 3>

Wichtige Punkte zur Java-Scanner-Klasse

  • Um ein Objekt der Scanner-Klasse zu erstellen, übergeben wir normalerweise das vordefinierte Objekt System.in, das den Standardeingabestream darstellt. Wir können ein Objekt der Klasse File übergeben, wenn wir Eingaben aus einer Datei lesen möchten.
  • Um numerische Werte eines bestimmten Datentyps XYZ zu lesen, ist die zu verwendende Funktion nextXYZ(). Um beispielsweise einen Wert vom Typ short zu lesen, können wir nextShort() verwenden
  • Um Strings zu lesen, verwenden wir nextLine().
  • Um ein einzelnes Zeichen zu lesen, verwenden wir next().charAt(0). Die Funktion next() gibt das nächste Token/Wort in der Eingabe als Zeichenfolge zurück und die Funktion charAt(0) gibt das erste Zeichen in dieser Zeichenfolge zurück.
  • Die Scanner-Klasse liest eine ganze Zeile und unterteilt die Zeile in Token. Token sind kleine Elemente, die für den Java-Compiler eine gewisse Bedeutung haben. Angenommen, es gibt eine Eingabezeichenfolge: Wie geht es Ihnen?
    In diesem Fall liest das Scannerobjekt die gesamte Zeile und unterteilt die Zeichenfolge in Token: How, are und you. Das Objekt durchläuft dann jedes Token und liest jedes Token mit seinen unterschiedlichen Methoden.