Beim Programmieren in Java oder einer anderen Sprache müssen Sie höchstwahrscheinlich Eingabeinformationen von einem Benutzer verwenden. Java bietet viele verschiedene Methoden zum Eingeben von Benutzerinformationen, aber die gebräuchlichste und vielleicht am einfachsten zu implementierende Methode ist die Verwendung des Scanner-Objekts.
Schritte
Methode 1 von 2: Videos
Schritt 1. Importieren Sie die Scanner-Klasse
Sie können entweder den Import der
java.util. Scanner
Klasse oder das ganze
java.util
Paket. Um eine Klasse oder ein Paket zu importieren, fügen Sie ganz am Anfang Ihres Codes eine der folgenden Zeilen hinzu:
java.util. Scanner importieren; // Dies importiert nur die Scanner-Klasse. java.util.* importieren; // Dies importiert das gesamte java.util-Paket.
Schritt 2. Initialisieren Sie ein neues Scanner-Objekt, indem Sie das
System.in
Eingabestream an den Konstruktor.
System.in
ist der Standard-Eingabestrom, der bereits geöffnet und bereit ist, Eingabedaten bereitzustellen. Normalerweise entspricht dieser Stream einer Tastatureingabe.
Scanner userInputScanner = neuer Scanner(System.in);
Schritt 3. Lesen Sie verschiedene Arten von Eingabedaten ein, die der Benutzer eingibt
Die Scanner-Klasse unterstützt das Abrufen von Primitiven wie int, byte, short, long zusätzlich zum Abrufen von Strings.
-
Hier sind einige Methoden, die über die Scanner-Klasse verfügbar sind:
-
Lesen Sie ein Byte -
nextByte()
-
Kurz lesen -
nextShort()
-
Int lesen -
nextInt()
-
Mitlesen -
nextLong()
-
Lesen Sie einen Schwimmer -
nextFloat()
-
Lesen Sie ein Doppel -
nextDouble()
-
Lesen Sie einen booleschen Wert -
nextBoolean()
-
Lesen Sie eine komplette Zeile -
nächste Zeile()
-
Lesen Sie ein Wort -
nächste()
-
-
Hier ist ein Beispiel für ein Programm, das verschiedene Methoden der Scanner-Klasse verwendet, um verschiedene Eingabetypen zu erhalten:
java.util. Scanner importieren; public class ScannerExample { public static void main(String args) { // Initiiere einen neuen Scanner Scanner userInputScanner = new Scanner(System.in); // Testen von nextLine(); System.out.println("\nWie ist Ihr Name? "); Stringname = userInputScanner.nextLine(); // Testen von nextInt(); System.out.print("Wie viele Katzen hast du? "); int numberOfCats = userInputScanner.nextInt(); // Testen von nextDouble(); System.out.print("Wie viel Geld ist in Ihrem Portemonnaie? $"); double moneyInWallet = userInputScanner.nextDouble(); System.out.println("\nHallo " + name + "! Du hast " + numberOfCats + (numberOfCats > 1 ? "cats": "cat") + " und $" + moneyInWallet + " in deiner Brieftasche.\n"); } }
Methode 2 von 2: Ausnahmen behandeln
Schritt 1. Behandeln Sie Eingabeausnahmen
Ein
InputMismatchException
wird ausgelöst, wenn der Benutzer Daten eingibt, die nicht mit dem angeforderten Typ übereinstimmen. Wenn der Benutzer beispielsweise einen String eingibt, wenn nach einem int gefragt wird, wirft das Programm ein
InputMismatchException
und Ausfahrt. Es gibt mehrere Möglichkeiten, diese Ausnahme zu behandeln und dieses Problem zu beheben, damit Ihr Programm narrensicher ist.
Schritt 2. Verwenden Sie einen Try-Catch-Block, um die
InputMismatchException
.
import java.util. InputMismatchException; java.util. Scanner importieren; public class ScannerExample { public static void main(String args) { // Initiiere einen neuen Scanner Scanner userInputScanner = new Scanner(System.in); // Testen von nextLine(); System.out.print("\nWie ist Ihr Name? "); Stringname = userInputScanner.nextLine(); // Testen von nextInt(); boolescher Wert validInput = false; int numberOfCats = 0; while (!validInput) { System.out.print("Wie viele Katzen hast du? "); try { numberOfCats = userInputScanner.nextInt(); gültige Eingabe = wahr; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } // teste nextDouble(); gültige Eingabe = falsch; doppeltes GeldInWallet = 0.0; while (!validInput) { System.out.print("Wie viel Geld ist in Ihrem Portemonnaie? $"); try { moneyInWallet = userInputScanner.nextDouble(); userInputScanner.nextLine(); gültige Eingabe = wahr; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } System.out.println("\nHallo " + name + "! Du hast " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " und $" + moneyInWallet + " in deiner Brieftasche.\ n"); } }
Beachten Sie, dass wir importieren müssen
java.util. InputMismatchException
um die zu verwenden
InputMismatchException
Hinzufügen
userInputScanner.nextLine();
Schritt 3. Alternativ können Sie die Benutzereingabe narrensicher machen, indem Sie nur die nächsten Zeilen vom Scanner aufnehmen
Auf diese Weise können wir sicherstellen, dass alles, was der Scanner zurückgibt, ein String-Objekt ist und keine Ausnahmen erzeugt. Um die Strings dann in Ganzzahlen oder Doubles zu konvertieren, können wir die Wrapper-Klassen Integer und Double verwenden.
java.util. Scanner importieren; public class ScannerExample { public static void main(String args) { // Initiiere einen neuen Scanner Scanner userInputScanner = new Scanner(System.in); // Testen von nextLine(); System.out.print("\nWie ist Ihr Name? "); Stringname = userInputScanner.nextLine(); // Testen von nextInt(); boolescher Wert validInput = false; int numberOfCats = 0; while (!validInput) { System.out.print("Wie viele Katzen hast du? "); String-Eingabe = userInputScanner.nextLine(); try { numberOfCats = Integer.parseInt (Eingabe); gültige Eingabe = wahr; } catch (NumberFormatException e) { validInput = false; } } // teste nextDouble(); gültige Eingabe = falsch; doppeltes GeldInWallet = 0.0; while (!validInput) { System.out.print("Wie viel Geld ist in Ihrem Portemonnaie? $"); String-Eingabe = userInputScanner.nextLine(); try { moneyInWallet = Double.parseDouble (Eingabe); gültige Eingabe = wahr; } catch (NumberFormatException e) { validInput = false; } } System.out.println("\nHallo " + name + "! Du hast " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " und $" + moneyInWallet + " in deiner Brieftasche.\ n"); } }
Beachten Sie, dass wir hier die
NumberFormatException
Wir mussten den Puffer auch nicht löschen mit
userInputScanner.nextLine();
Tipps
- Weitere Informationen zur Verwendung der Scanner-Klasse finden Sie in der Scanner-API.
- Verwenden Sie immer.next() anstelle von.nextLine(), um das nächste Wort zu lesen, da.nextLine() fehlerhaft sein kann.