java scanner class tutorial with examples
In diesem Lernprogramm wird das Importieren und Verwenden der Scannerklasse von Java zusammen mit den verschiedenen Methoden, der Scanner-API und den Beispielen erläutert:
Wir haben bereits die Standard-Eingabe-Ausgabe-Methoden gesehen, die von Java zum Lesen / Schreiben von Daten auf die Standard-E / A-Geräte verwendet werden.
Java bietet einen weiteren Mechanismus zum Lesen von Benutzereingaben. Dies ist die Scannerklasse. Obwohl nicht sehr effizient, ist die Scannerklasse die einfachste und bevorzugte Methode zum Lesen von Eingaben in Java-Programmen.
=> Überprüfen Sie ALLE Java-Tutorials hier.
Was du lernen wirst:
Java Scanner Class: Ein detaillierter Blick
Die Scannerklasse wird meistens verwendet, um die Eingabe zu scannen und die Eingabe von primitiven (integrierten) Datentypen wie int, decimal, double usw. zu lesen. Die Scannerklasse gibt im Wesentlichen die tokenisierte Eingabe basierend auf einem Begrenzungsmuster zurück. Wenn Sie also den Typ dt lesen möchten, können Sie im Allgemeinen die Funktion nextdt () verwenden, um die Eingabe zu lesen.
Eine Scannerklasse implementiert Iterator- (Zeichenfolge), Closeable- und AutoCloseable-Schnittstellen.
Lassen Sie uns jetzt die Details dieser Scannerklasse untersuchen.
Scanner importieren
Die Scannerklasse gehört zum Paket 'java.util'. Um die Scannerklasse in Ihrem Programm zu verwenden, müssen Sie dieses Paket wie folgt importieren.
importiere java.util. *
ODER
import java.util.Scanner;
Jede der obigen Anweisungen importiert die Scannerklasse und ihre Funktionalität in Ihr Programm.
Java-Scannerklasse
Sobald die Scannerklasse in das Java-Programm importiert wurde, können Sie damit die Eingabe verschiedener Datentypen lesen. Je nachdem, ob Sie die Eingabe von der Standardeingabe oder der Datei oder dem Kanal lesen möchten, können Sie das entsprechende vordefinierte Objekt an das Scannerobjekt übergeben.
Im Folgenden finden Sie ein grundlegendes Beispiel für die Verwendung von Scannerklassen.
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
Ausgabe:
Im obigen Programm haben wir beim Erstellen eines Scannerklassenobjekts 'System.in' (Standardeingabe) als Objekt angegeben. Dann lesen wir eine Zeichenfolgeneingabe von der Standardeingabe.
Scanner-API (Konstruktoren und Methoden)
In diesem Abschnitt werden wir die Scanner-Klassen-API im Detail untersuchen. Die Scannerklasse enthält verschiedene überladene Konstruktoren, um verschiedene Eingabemethoden wie System.in, Dateieingabe, Pfad usw. zu berücksichtigen.
Die folgende Tabelle enthält den Prototyp und die Beschreibung der einzelnen Scannerklassenkonstruktoren.
Wie öffnet man eine Bin-Datei?
Nein | Prototyp | Beschreibung |
---|---|---|
7 | Scanner (Pfadquelle, Zeichenfolge charsetName) | Dieser Konstruktor erstellt einen neuen Scanner, der die angegebene Datei scannt und die Werte erzeugt |
ein | Scanner (InputStream-Quelle) | Dieser Konstruktor erstellt einen neuen Scanner, der den neuen InputStream und die neue Quelle scannt und die Werte erzeugt |
zwei | Scanner (InputStream-Quelle, String charsetName) | Dieser Konstruktor erstellt einen neuen Scanner, der den neuen InputStream und die neue Quelle scannt und die Werte erzeugt |
3 | Scanner (Dateiquelle) | Dieser Konstruktor erstellt einen neuen Scanner, der die angegebene Datei scannt und die Werte erzeugt |
4 | Scanner (Dateiquelle, Zeichenfolge charsetName) | Dieser Konstruktor erstellt einen neuen Scanner, der die angegebene Datei scannt und die Werte erzeugt |
5 | Scanner (String-Quelle) | Dieser Konstruktor erstellt einen neuen Scanner, der die angegebene Zeichenfolge scannt und die Werte erzeugt |
6 | Scanner (Pfadquelle) | Dieser Konstruktor erstellt einen neuen Scanner, der die angegebene Datei scannt und die Werte erzeugt |
8 | Scanner (lesbare Quelle) | Dieser Konstruktor erstellt einen neuen Scanner, der die angegebene Quelle scannt und die Werte erzeugt |
9 | Scanner (ReadableByteChannel-Quelle) | Dieser Konstruktor erstellt einen neuen Scanner, der den angegebenen Kanal scannt und die Werte erzeugt |
10 | Scanner (ReadableByteChannel-Quelle, String charsetName) | Dieser Konstruktor erstellt einen neuen Scanner, der den angegebenen Kanal scannt und die Werte erzeugt |
Genau wie Konstruktoren bietet auch die Scanner-Klasse zahlreiche Methoden zum Scannen und Lesen der Eingabe. Es bietet verschiedene boolesche Methoden, mit denen Sie überprüfen können, ob das nächste Token in der Eingabe ein Token eines bestimmten Datentyps ist.
Beachten Sie, dass Sie für jeden Konstruktor entweder nur ein Argument mit dem vordefinierten Eingabeobjekt oder zwei Argumente aus vordefiniertem Eingabeobjekt und Zeichensatz angeben können. Bei einem Argument wird der Standardzeichensatz angenommen.
Es gibt auch Methoden zum Abrufen von Token für jeden Datentyp.
Andere Methoden umfassen das Festlegen von Gebietsschema, Radix, Übereinstimmungsmustern, Schließen des Scanners usw.
Die folgende Tabelle enthält den Prototyp und die Beschreibung der einzelnen grundlegenden Scannermethoden.
Nein | Prototyp | Beschreibung |
---|---|---|
7 | Boolean hasNextFloat () | Überprüft, ob das nächste Token in der Scannereingabe vom Typ float ist |
ein | Boolean hasNext () | Gibt true zurück, wenn die Eingabe des Scanners ein anderes Token enthält |
zwei | Boolean hasNextBigDecimal () | Überprüft, ob das nächste Token in der Scannereingabe vom Typ bigDecimal ist. |
3 | Boolean hasNextBigInteger () | Überprüft, ob das nächste Token in der Scannereingabe vom Typ bigInteger ist |
4 | Boolean hasNextBoolean () | Überprüft, ob das nächste Token in der Scannereingabe vom Typ Boolean ist |
5 | Boolean hasNextByte () | Überprüft, ob das nächste Token in der Scannereingabe vom Typ Byte ist |
6 | Boolean hasNextDouble () | Überprüft, ob das nächste Token in der Scannereingabe vom doppelten Typ ist |
8 | Boolean hasNextInt () | Überprüft, ob das nächste Token in der Scannereingabe vom Typ Integer ist |
9 | Boolean hasNextLine () | Überprüft, ob das nächste Token in der Scannereingabe eine andere Zeile ist |
10 | Boolean hasNextLong () | Überprüft, ob das nächste Token in der Scannereingabe vom langen Typ ist |
elf | Boolean hasNextShort () | Überprüft, ob das nächste Token in der Scannereingabe vom kurzen Typ ist |
12 | String next () | Durchsucht die Eingabe nach dem nächsten vollständigen Token |
13 | BigDecimal nextBigDecimal () | Durchsucht die Eingabe nach dem nächsten BigDecimal-Token |
14 | BigInteger nextBigInteger () | Durchsucht die Eingabe nach dem nächsten BigInteger-Token |
fünfzehn | Boolean nextBoolean () | Durchsucht die Eingabe nach dem nächsten Booleschen Token |
16 | Byte nextByte () | Durchsucht die Eingabe nach dem nächsten Byte-Token |
17 | Double nextDouble () | Scannt die Eingabe nach dem nächsten Double Token |
18 | Float nextFloat () | Durchsucht die Eingabe nach dem nächsten Float-Token |
19 | Int nextInt () | Durchsucht die Eingabe nach dem nächsten Ganzzahl-Token |
zwanzig | String nextLine () | Lassen Sie die Eingabezeichenfolge vom Scannerobjekt überspringen |
einundzwanzig | Long nextLong () | Durchsucht die Eingabe nach dem nächsten Long Integer-Token |
22 | Kurz nextShort () | Durchsucht die Eingabe nach dem nächsten Short Integer-Token |
2. 3 | Scanner zurücksetzen () | Setzen Sie den aktuell verwendeten Scanner zurück |
24 | Scanner überspringen () | Ignorieren Sie Trennzeichen und überspringen Sie die Eingabe, die dem angegebenen Muster entspricht |
25 | Scanner useDelimiter () | Stellen Sie das Begrenzungsmuster auf das angegebene Muster ein |
26 | Scanner useLocale () | Legen Sie das Gebietsschemaobjekt 'Scanner' mit dem angegebenen Gebietsschema fest |
27 | Scanner useRadix () | Legen Sie den angegebenen Radix als Standardradix für den Scanner fest |
28 | Int radix () | Gibt den Standard-Radix des aktuellen Scanners zurück |
29 | void remove () | Kann verwendet werden, wenn Iterator den Entfernungsvorgang nicht unterstützt |
30 | Stream-Token () | Gibt einen Strom von durch Trennzeichen getrennten Token vom aktuellen Scanner zurück |
31 | String toString () | Die Darstellung der Rückgabezeichenfolge des aktuell verwendeten Scanners |
32 | IOException ioException () | Gibt die IOException zurück, die zuletzt vom lesbaren Scannerobjekt ausgelöst wurde |
33 | Stream findALL () | Gibt den Stream der Übereinstimmungsergebnisse zurück, die dem angegebenen Muster entsprechen |
3. 4 | String findInLine () | Suchen Sie das nächste Vorkommen des Musters aus der angegebenen Zeichenfolge. ignoriert Trennzeichen |
35 | String findWithinHorizon () | Suchen Sie das nächste Vorkommen des Musters aus der angegebenen Zeichenfolge. ignoriert Trennzeichen |
36 | Musterbegrenzer () | Gibt das vom aktuellen Scanner verwendete Muster zurück |
37 | Leere schließen () | Schließt den Scanner |
38 | MatchResult match () | Gibt das übereinstimmende Ergebnis des letzten Scanvorgangs zurück |
39 | Lokal lokal () | Gebietsschema des aktuellen Scanners zurückgeben |
Prüfen Hier um mehr über die Scannermethoden zu erfahren.
Wie verwende ich den Scanner in Java?
Nachdem Sie die verschiedenen Konstruktoren und Methoden der Scannerklasse kennengelernt haben, implementieren wir nun einige Beispiele, um die Verwendung der Scannerklasse in Java zu demonstrieren.
Die folgende Implementierung zeigt die Verwendung der Scannerklasse zum Lesen von Eingaben aus System.in, d. H. Der Standardeingabe.
Hier verwenden wir ein vordefiniertes System.in-Objekt, um ein Scannerobjekt zu erstellen. Der Benutzer wird dann aufgefordert, den Namen, die Klasse und den Prozentsatz einzugeben. Alle diese Details werden mit dem Scanner-Klassenobjekt gelesen.
Beachten Sie die Methoden, die von Scannerobjekten zum Lesen verschiedener Eingabetypen verwendet werden. Da der Name eine Zeichenfolge ist, verwendet das Scannerobjekt die next () -Methode. Für die Klasseneingabe wird nextInt () verwendet, während für den Prozentsatz nextFloat () verwendet wird.
Auf diese Weise können Sie die Eingabe beim Lesen leicht trennen.
Die Ausgabe des Programms zeigt die eingegebene Eingabe und die angezeigten Informationen.
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
Ausgabe:
Scanner-Zeichenfolge
Wie bereits erwähnt, können Sie beim Erstellen eines Scannerobjekts verschiedene vordefinierte Objekte verwenden. Dies bedeutet, dass Sie die Eingabe entweder von Standardeingaben, Dateien und verschiedenen E / A-Kanälen oder auch von Zeichenfolgen lesen können.
Wenn eine Zeichenfolgeneingabe verwendet wird, können Sie auch reguläre Ausdrücke verwenden.
Die folgenden Beispiele zeigen das Programm, bei dem der Scanner eine Zeichenfolge als Eingabe verwendet. Diese Eingabe wird dann gescannt und die Token durch Lesen jedes Tokens getrennt.
Die gelesenen Token werden dann in der Ausgabe angezeigt.
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
Ausgabe:
Scanner schließen
Die Java Scanner-Klasse verwendet die Methode 'Close ()', um den Scanner zu schließen. Die Scannerklasse implementiert auch intern eine Closeable-Schnittstelle. Wenn der Scanner noch nicht geschlossen ist, ruft die zugrunde liegende Readable-Schnittstelle ihre Close-Methode auf.
Es ist eine gute Programmierpraxis, den Scanner explizit mit der Close () -Methode zu schließen, sobald Sie damit fertig sind.
Hinweis: Wenn das Scannerobjekt geschlossen wird und versucht wird zu suchen, wird 'IllegalStateException' angezeigt.
Häufig gestellte Fragen
F # 1) Was ist die Scannerklasse in Java?
Antworten: Die Scanner-Klasse ist Teil des Java-Pakets 'java.util' und wird zum Lesen von Eingaben verschiedener primitiver Datentypen wie int, float, strings usw. verwendet.
Wo ist mein Netzwerksicherheitsschlüssel?
F # 2) Was ist der Unterschied zwischen den Methoden next () und nextLine () der Scannerklasse?
Antworten: Die Methode next () liest die Eingabe bis zum Leerzeichen und platziert den Cursor nach dem Lesen der Eingabe in derselben Zeile. Die Methode nextLine () liest jedoch die gesamte Eingabezeile bis zum Zeilenende einschließlich der Leerzeichen.
F # 3) Was ist hasNext () in Java?
Antworten: Die Methode hasNext () ist eine der Java Scanner-Methoden. Diese Methode gibt true zurück, wenn der Scanner ein anderes Token in der Eingabe hat.
F # 4) Müssen Sie eine Scannerklasse schließen?
Antworten: Es ist besser, aber nicht obligatorisch, die Scannerklasse so zu schließen, als ob sie nicht geschlossen wäre. Die zugrunde liegende lesbare Schnittstelle der Scannerklasse erledigt die Aufgabe für Sie. Der Compiler blinkt möglicherweise eine Warnung, wenn er nicht geschlossen ist.
Schließen Sie daher als gute Programmierpraxis immer den Scanner.
F # 5) Was ist der Zweck von 'system.in' in der Scannerklasse?
Antworten: Durch die Verwendung von 'System.in' in der Scannerklasse können Sie dem Scanner erlauben, die Tastatur zu lesen, die mit Standardeingabedaten verbunden ist.
Fazit
In diesem Tutorial haben wir die Scanner-Klasse und alle ihre Details einschließlich der API und der Implementierung gesehen. Die Scannerklasse wird zum Lesen von Eingabedaten von verschiedenen Medien wie Standardeingaben, Dateien, E / A-Kanälen, Zeichenfolgen mit / ohne reguläre Ausdrücke usw. verwendet.
Obwohl der Scanner keine sehr effiziente Methode zum Lesen von Eingaben ist, ist er eine der einfachsten Methoden. Mit dem Scanner können Sie die Eingabe verschiedener primitiver Datentypen wie int, float, Strings usw. lesen. Wenn Sie Strings als Eingabeobjekt für die Scannerklasse verwenden, können Sie auch reguläre Ausdrücke verwenden.
Mit der Scannerklasse können Sie auch Eingaben lesen, indem Sie ein Muster oder ein Trennzeichen abgleichen.
Zusammenfassend bleibt die Verwendung der Scannerklasse in Java die einfachste und bevorzugte Methode zum Lesen von Eingaben.
=> Lesen Sie hier den perfekten Java-Schulungsleitfaden.
Literatur-Empfehlungen
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen
- Java Array Class Tutorial - java.util.Arrays-Klasse mit Beispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Java Interface und Abstract Class Tutorial mit Beispielen
- Java Reflection Tutorial mit Beispielen
- Jagged Array In Java - Tutorial mit Beispielen
- Java Array Length Tutorial mit Codebeispielen
- Java String Tutorial | Java-String-Methoden mit Beispielen