So verwenden Sie den Scanner in Java

How Use Scanner Java



Der Scanner in Java ist eine Klasse im java.util-Paket. Diese Klasse zielt darauf ab, Eingaben von einem String, der Tastatur, einer Datei oder einem Netzwerk-Socket zu lesen. Dieser Artikel konzentriert sich nur darauf, Eingaben über die Tastatur zu lesen und das Ergebnis im Terminalfenster anzuzeigen. Ähnliche Ideen können verwendet werden, um Eingaben aus der Datei oder dem Netzwerkkanal zu lesen. Der Scanner druckt nicht im Terminalfenster. Verwenden Sie das System.out-Objekt, um auf dem Terminal zu drucken. Es ist einfach, dieses Objekt zu verwenden, um an das Terminal zu drucken, wie unten dargestellt.

Um die Scanner-Klasse verwenden zu können, muss sie zuerst importiert werden. Danach muss daraus ein Objekt instanziiert werden. Nach der Verwendung des Scanner-Objekts muss es geschlossen werden. Das Eingabestream-Objekt, das die Tastatur darstellt, ist System.in. Der Scanner hat viele Methoden. In diesem Artikel werden nur die gebräuchlichsten erklärt.







Artikelinhalt



Einfache Nutzung der Scannerklasse

Der folgende Code fordert den Benutzer auf, einen Satz einzugeben, und zeigt dann den Satz an:



importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
Scanner scanObj= NeuScanner( System .in);
System .aus.println('Geben Sie einen Satz ein und drücken Sie die Eingabetaste:');

Zeichenfolge Satz=scanObj.nächste Zeile();
System .aus.println(Satz);

scanObj.nah dran();
}
}

Die erste Zeile importiert die Scanner-Klasse. In der Hauptfunktion erstellt die erste Zeile ein Scanner-Objekt unter Verwendung des System.in-Objekts für die Tastatur. Sobald das Scannerobjekt angelegt ist, beginnt es auf Eingaben zu warten. Die nächste Zeile gibt eine Anweisung aus, in der der Benutzer aufgefordert wird, einen Satz einzugeben. Die folgende Zeile im Code verwendet die nextLine()-Methode des Scanner-Objekts, um den Satz des Benutzers zu lesen, nachdem er die Eingabetaste gedrückt hat. Die Zeile danach im Code gibt den Satz im Terminalfenster erneut aus. Die letzte Zeile schließt das Scannerobjekt.





Eingabezeile in Werte spucken

Der folgende Code teilt die Eingabezeile in Wörter (Token) auf, wobei das Leerzeichen als Trennzeichen verwendet wird:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
Scanner scanObj= NeuScanner( System .in);
System .aus.println('Geben Sie eine Token-Zeile ein und drücken Sie die Eingabetaste:');

während(scanObj.hasNext()){
System .aus.println(scanObj.nächste());
}

scanObj.nah dran();
}
}

hasNext() und next() sind zwei weitere Methoden des Scanner-Objekts. Wenn das Scannerobjekt eine Zeile liest, behält es sie bei. next() greift auf das nächste Token (Wort) zu. hasNext() gibt true zurück, wenn auf ein anderes Token noch nicht zugegriffen wurde.



Leider wird vom Benutzer immer noch erwartet, dass er mit diesem Code Eingaben zum Aufteilen und erneuten Anzeigen eingibt. Um all dies zu beenden, drücken Sie Strg+z, und Sie sollten wieder an der Eingabeaufforderung sein.

Im obigen Code trennt das Trennzeichen Token im Leerzeichen. Ein anderes Zeichen kann verwendet werden. Der folgende Code verwendet das Komma. Vergessen Sie nicht, Strg+z zu drücken, um die Schleife zu beenden, wenn Sie den Code testen.

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
Scanner scanObj= NeuScanner( System .in);
System .aus.println('Geben Sie eine Token-Zeile ein und drücken Sie die Eingabetaste:');

scanObj.useTrennzeichen(',');

während(scanObj.hasNext()){
System .aus.println(scanObj.nächste());
}

scanObj.nah dran();
}
}

Wenn Sie den Code getestet haben, wäre Ihnen aufgefallen, dass Leerzeichen in Token als Teil von Token (Ausgabe) enthalten sind. Der Ausdruck scanObj.useDelimiter(,); getippt, nachdem die Eingabezeile gelesen wurde; es macht Komma, das Trennzeichen.

Lesen und Validieren von primitiven Datentypen

nextBoolean()-Methode

Im folgenden Code wird vom Benutzer erwartet, dass er entweder true oder false ohne die Anführungszeichen eingibt und dann die Eingabetaste drückt, wenn der Benutzer etwas anderes eingibt, z. B. Ja oder Nein, wird eine Fehlermeldung angezeigt.

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.drucken(„Bist du über 24? ');
Scanner scanObj= NeuScanner( System .in);

booleschbl=scanObj.nextBoolean();
wenn (bl== wahr) {
System .aus.println(„Du bist über 24“);
}
anders wenn (bl== falsch) {
System .aus.println(„Du bist unter 24“);
}

scanObj.nah dran();
}
}

Da Java eine Fehlermeldung ausgibt, solange die Eingabe nicht genau wahr oder falsch ist, wurde das else if anstelle von else verwendet.

Der Unterschied zwischen den Methoden print und println besteht darin, dass print die Eingabe in der aktuellen Zeile erwartet, während println die Eingabe in der nächsten Zeile erwartet.

nextByte()-Methode

Beim ASCII-Zeichensatz ist ein Zeichen ein Byte. Bei einigen östlichen Zeichensätzen kann ein Zeichen jedoch aus mehr als einem Byte bestehen. Unabhängig vom Zeichensatz liest und validiert die nextByte-Methode das nächste Byte der Eingabe. Dazu kann folgender Code verwendet werden:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.drucken('Nummer eingeben<128, press Enter: ');
Scanner scanObj= NeuScanner( System .in);

Bytebt=scanObj.nextByte();
System .aus.println(bt);

scanObj.nah dran();
}
}

Wenn für diesen Code eine Zahl größer als 127 oder ein alphabetisches Zeichen eingegeben wird, wird eine Fehlermeldung ausgegeben.

nextInt() Methode

Das nächste Integer-Token als Eingabe kann ebenfalls validiert und akzeptiert werden. Der folgende Code kann verwendet werden:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.drucken('Beliebige ganze Zahl eingeben: ');
Scanner scanObj= NeuScanner( System .in);

intAuf eins=scanObj.nextInt();
System .aus.println(Auf eins);

scanObj.nah dran();
}
}

Führende oder nachgestellte Leerzeichen wurden entfernt. Für diesen Code wird jeder ganzzahlige Wert akzeptiert, einschließlich Werten größer als 127. Bei diesen nextXXX()-Methoden wird eine Fehlermeldung ausgegeben, sobald die Validierung fehlschlägt.

nextBigInteger() Methode

Es scheint, dass Software-Ingenieure nie aufhören werden, neue Dinge zu entwickeln. Eine große ganze Zahl ist eine ganze Zahl, deren Wert viel größer ist als der einer ganzen Zahl. Mit Java kann es jedoch genauso gelesen werden wie die Ganzzahl. Der folgende Code veranschaulicht dies:

importieren java.util.Scanner;
importieren java.math.BigInteger;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.println('Geben Sie eine beliebige ganze Zahl für Big Integer ein: ');
Scanner scanObj= NeuScanner( System .in);

BigInteger Auf eins=scanObj.nextBigInteger();
System .aus.println(Auf eins);

scanObj.nah dran();
}
}

Beachten Sie die Importanweisung import java.math.BigInteger;. Beachten Sie auch, dass der große Integer-Typ mit einem Großbuchstaben B und nicht mit einem Kleinbuchstaben b beginnt.

nextFloat() Methode

Auch das nächste Float-Token als Eingabe kann validiert und akzeptiert werden. Der folgende Code kann verwendet werden:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.drucken('Beliebigen Float eingeben: ');
Scanner scanObj= NeuScanner( System .in);

schwebenAuf eins=scanObj.nextFloat();
System .aus.println(Auf eins);

scanObj.nah dran();
}
}

Ein Beispiel für eine Gleitkommazahl ist 23.456. Führende oder nachgestellte Leerzeichen wurden entfernt.

nextDouble()

Auch der nächste Doppeltoken als Eingabe kann validiert und akzeptiert werden. Der folgende Code kann verwendet werden:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.drucken('Geben Sie ein beliebiges Double ein: ');
Scanner scanObj= NeuScanner( System .in);

doppeltAuf eins=scanObj.nextDouble();
System .aus.println(Auf eins);

scanObj.nah dran();
}
}

Ein Beispiel für eine doppelte Zahl ist 23.456. Eine doppelte Zahl unterscheidet sich von einer Gleitkommazahl, da sie eine geringere Fehlerquote hat. Führende oder nachgestellte Leerzeichen wurden entfernt.

nextLine()-Methode

Die Methode nextLine() ist für einen String. Wenn die Zeichenfolge die Eingabezeile der Tastatur ist, nachdem Sie die Eingabetaste gedrückt haben, kann sie das Zeilenumbruchzeichen ' ' enthalten. Der folgende Code kann verwendet werden:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
System .aus.println('Geben Sie eine Zeile mit . ein\n : ');
Scanner scanObj= NeuScanner( System .in);

Zeichenfolge P=scanObj.nächste Zeile();
System .aus.println(P);

scanObj.nah dran();
}
}

Beachten Sie, dass der Zeichenfolgentyp mit dem Großbuchstaben S und nicht mit dem Kleinbuchstaben s beginnt.

Die Methoden nextLine(), hasNext() und next() wurden bereits in diesem Artikel verwendet. Der Scanner verfügt über andere Methoden und andere primitive Datenmethoden – siehe später.

Zuweisen einer Eingabe zu einer Variablen

Input kann einer Variablen zugewiesen werden, wie der folgende Code zeigt:

importieren java.util.Scanner;

öffentlich KlasseDie Klasse{
öffentlich statisch Leerehauptsächlich( Zeichenfolge []args) {
Scanner scanObj= NeuScanner( System .in);

System .aus.drucken('Name eingeben: ');
Zeichenfolge Name=scanObj.nächste Zeile();

System .aus.drucken('Alter eingeben: ');
intAlter=scanObj.nextInt();

System .aus.drucken('Gehalt eingeben: ');
doppeltGehalt=scanObj.nextDouble();

System .aus.println('Name: ' +Name+ ', Alter: ' +Alter+ ', Gehalt: ' +Gehalt);

scanObj.nah dran();
}
}

Abschluss

Der Scanner in Java ist eine Klasse im java.util-Paket. Diese Klasse zielt darauf ab, Eingaben von einem String, der Tastatur, einer Datei oder einem Netzwerk-Socket zu lesen. Dieser Artikel hat sich hauptsächlich darauf konzentriert, Eingaben über die Tastatur zu lesen und das Ergebnis im Terminalfenster anzuzeigen. Ähnliche Ideen können verwendet werden, um Eingaben aus der Zeichenfolge, Datei oder dem Netzwerkkanal zu lesen.

Um die gesamte Tastatureingabezeile zu lesen, verwenden Sie die Methode nextLine(). Die Zeile als String kann mit den Methoden hasNext() und next() und der while-Schleife in Token aufgeteilt werden. Das Standardtrennzeichen für die Aufteilung ist das Leerzeichen, aber der Programmierer kann ein anderes Trennzeichen wählen. Vergessen Sie nicht, Strg+z zu drücken, um die while-Schleife bei Bedarf zu stoppen. Das Entfernen von führenden und nachgestellten Leerzeichen kann mit anderen Schemata erfolgen, die in diesem Artikel nicht behandelt werden. Die Validierung der Token kann auch mit anderen Schemata erfolgen, die in diesem Artikel nicht behandelt werden.

Primitive Werte können mit nextBoolean(), nextByte(), nextInt() usw. gelesen werden. Diese nextXXX()-Methoden führen eine Validierung durch und entfernen auch führende und nachfolgende Leerzeichen.

Der Java Scanner hat viele weitere Methoden. Die grundlegende Verwendung des Scanners wurde jedoch in diesem Artikel erläutert. Die Auswahl eines Tokens erfolgt tatsächlich unter Verwendung von Techniken des regulären Ausdrucks. Die Verwendung von Techniken für reguläre Ausdrücke wird für eine andere Zeit diskutiert.