Java Scanner-Klasse
java.util.Scanner ist eine neue Funktion in Java 5. Wir können Benutzereingaben über die Scanner-Klasse erhalten.
Das Folgende ist die grundlegende Syntax zum Erstellen eines Scanner-Objekts:
Als Nächstes demonstrieren wir eine einfache Dateneingabe und erhalten die Eingabezeichenfolge über die Methoden next() und nextLine() der Scanner-Klasse. Vor dem Lesen müssen wir im Allgemeinen hasNext und hasNextLine verwenden, um festzustellen, ob noch Eingabedaten vorhanden sind:
Verwendung der next-Methode:
Code der Datei ScannerDemo.java:
Die Ausgabe nach der Ausführung des obigen Programms ist:
$ javac ScannerDemo.java $ java ScannerDemo next方式接收: example com 输入的数据为:example
Es ist zu sehen, dass die Zeichenkette com nicht ausgegeben wurde. Als Nächstes sehen wir uns nextLine an.
Verwendung der Methode nextLine:
Code der Datei ScannerDemo.java:
Die Ausgabe nach der Ausführung des obigen Programms ist:
$ javac ScannerDemo.java $ java ScannerDemo nextLine方式接收: example com 输入的数据为:example com
Man kann sehen, dass die Zeichenkette com ausgegeben wird.
Unterschied zwischen next() und nextLine()
next():
- 1. Die Eingabe kann erst beendet werden, nachdem gültige Zeichen gelesen wurden.
- 2. Bei Whitespace, der vor gültigen Eingabezeichen auftritt, entfernt die Methode next() diesen automatisch.
- 3. Erst nachdem gültige Zeichen eingegeben wurden, wird der Whitespace danach als Trennzeichen oder Abschluss verwendet.
- next() kann keine Zeichenkette mit Leerzeichen erhalten.
nextLine():
- 1. Die Eingabetaste ist das Abschlusszeichen, das heißt, die Methode nextLine() gibt alle Zeichen zurück, bevor die Eingabetaste eingegeben wird.
- 2. Sie kann Leerraum erfassen.
Wenn Sie Daten vom Typ int oder float eingeben möchten, unterstützt die Scanner-Klasse dies ebenfalls, aber vor der Eingabe ist es am besten, die Methode hasNextXxx() zur Validierung zu verwenden und dann nextXxx() zum Einlesen zu nutzen:
Code der Datei ScannerDemo.java:
Die Ausgabe nach der Ausführung des obigen Programms ist:
$ javac ScannerDemo.java $ java ScannerDemo 输入整数:12 整数数据:12 输入小数:1.2 小数数据:1.2
Im folgenden Beispiel können wir mehrere Zahlen eingeben und ihre Summe und ihren Durchschnitt berechnen. Jede Zahl wird durch Drücken der Eingabetaste bestätigt. Beenden Sie die Eingabe durch Eingabe einer Nicht-Zahl, dann wird das Ausführungsergebnis ausgegeben:
Code der Datei ScannerDemo.java:
Die Ausgabe nach Ausführung des obigen Programms ist (geben Sie eine Nicht-Zahl ein, um die Eingabe zu beenden):
$ javac ScannerDemo.java $ java ScannerDemo 请输入数字: 12 23 15 21.4 end 4个数的和为71.4 4个数的平均值是17.85
Häufig verwendete Methoden
| Methode | Beschreibung |
|---|---|
| Konstruktoren | |
Scanner(File source) |
Scanner aus einer Datei erstellen |
Scanner(InputStream source) |
Scanner aus einem Eingabestream erstellen |
Scanner(String source) |
Scanner aus einer Zeichenkette erstellen |
| Grundlegende Eingabemethoden | |
boolean hasNext() |
Prüfen, ob ein nächstes Token vorhanden ist (durch Leerzeichen getrennt) |
String next() |
Das nächste Token lesen (Zeichenkette) |
boolean hasNextLine() |
Prüfen, ob eine nächste Zeile vorhanden ist |
String nextLine() |
Den Inhalt der nächsten Zeile lesen |
| Methoden zur Typprüfung | |
boolean hasNextInt() |
Prüfen, ob das nächste Token eine Ganzzahl ist |
boolean hasNextDouble() |
Prüfen, ob das nächste Token ein double ist |
boolean hasNextBoolean() |
Prüfen, ob das nächste Token ein boolean ist |
| Methoden zum Lesen von Typen | |
int nextInt() |
Die nächste Ganzzahl lesen |
double nextDouble() |
Das nächste double lesen |
boolean nextBoolean() |
Das nächste boolean lesen |
long nextLong() |
Die nächste long-Ganzzahl lesen |
float nextFloat() |
Das nächste float lesen |
short nextShort() |
Die nächste short-Ganzzahl lesen |
byte nextByte() |
Das nächste Byte lesen |
| Delimiter-Steuerung | |
Scanner useDelimiter(String pattern) |
Trennzeichenmuster festlegen |
Scanner useDelimiter(Pattern pattern) |
Trennzeichen mithilfe eines regulären Ausdrucks festlegen |
String delimiter() |
Gibt das aktuell verwendete Trennzeichenmuster zurück |
| Andere Methoden | |
void close() |
Schließt den Scanner |
Scanner skip(Pattern pattern) |
Überspringt Eingaben, die dem angegebenen Muster entsprechen |
Scanner skip(String pattern) |
Überspringt Eingaben, die der angegebenen Zeichenfolge entsprechen |
String findInLine(Pattern pattern) |
Sucht das angegebene Muster in der aktuellen Zeile |
String findInLine(String pattern) |
Sucht die angegebene Zeichenfolge in der aktuellen Zeile |
Scanner reset() |
Setzt den Scanner zurück |
Locale locale() |
Gibt das aktuell vom Scanner verwendete Gebietsschema zurück |
Scanner useLocale(Locale locale) |
Legt das Gebietsschema des Scanners fest |
Weitere Inhalte finden Sie in der API-Dokumentation:https://www.example.com/manual/jdk11api/java.base/java/util/Scanner.html。
Weitere Erweiterungen