363 Stimmen

Wie erhält man die Benutzereingabe in Java?

Ich habe versucht, einen Taschenrechner zu erstellen, aber ich kann ihn nicht zum Laufen bringen, weil ich nicht weiß wie man Benutzereingaben erhält .

Wie kann ich die Benutzereingabe in Java erhalten?

18voto

JFreeman Punkte 946

Die beiden besten Optionen sind BufferedReader y Scanner .

Die am weitesten verbreitete Methode ist Scanner und ich persönlich bevorzuge es wegen seiner Einfachheit und leichten Implementierung sowie seiner leistungsstarken Funktion zum Parsen von Text in primitive Daten.

Vorteile der Verwendung eines Scanners

  • Einfacher Einsatz der Scanner クラス
  • Einfache Eingabe von Zahlen (int, short, byte, float, long und double)
  • Ausnahmen sind nicht markiert, was bequemer ist. Es obliegt dem Programmierer, zivilisiert zu sein und die Ausnahmen anzugeben oder abzufangen.
  • Kann Zeilen, Leerzeichen und durch Regex getrennte Token lesen

Vorteile von BufferedInputStream


Insgesamt hat jede Eingabemethode einen anderen Zweck.

  • Wenn Sie eine große Menge an Daten eingeben BufferedReader sein könnte besser für Sie

  • Wenn Sie viele Zahlen eingeben Scanner übernimmt das automatische Parsing was sehr praktisch ist

Für einfachere Anwendungen empfehle ich die Scanner weil es einfacher zu benutzen und einfacher zu programmieren ist. Hier ist ein kurzes Beispiel für die Erstellung einer Scanner . Im Folgenden werde ich ein umfassendes Beispiel für die Verwendung der Scanner

Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name");       // prompt user
name = scanner.next();                     // get user input

(Für weitere Informationen über BufferedReader siehe Wie man einen BufferedReader verwendet und sehen Lesen von Zeichenketten )


java.util.Scanner

import java.util.InputMismatchException; // import the exception catching class
import java.util.Scanner; // import the scanner class

public class RunScanner {

    // main method which will run your program
    public static void main(String args[]) {

        // create your new scanner
        // Note: since scanner is opened to "System.in" closing it will close "System.in". 
        // Do not close scanner until you no longer want to use it at all.
        Scanner scanner = new Scanner(System.in);

        // PROMPT THE USER
        // Note: when using scanner it is recommended to prompt the user with "System.out.print" or "System.out.println"
        System.out.println("Please enter a number");

        // use "try" to catch invalid inputs
        try {

            // get integer with "nextInt()"
            int n = scanner.nextInt();

            System.out.println("Please enter a decimal"); // PROMPT
            // get decimal with "nextFloat()"
            float f = scanner.nextFloat();

            System.out.println("Please enter a word"); // PROMPT
            // get single word with "next()"
            String s = scanner.next();

            // ---- Note: Scanner.nextInt() does not consume a nextLine character /n 
            // ---- In order to read a new line we first need to clear the current nextLine by reading it:
            scanner.nextLine(); 
            // ----
            System.out.println("Please enter a line"); // PROMPT
            // get line with "nextLine()"
            String l = scanner.nextLine();

            // do something with the input
            System.out.println("The number entered was: " + n);
            System.out.println("The decimal entered was: " + f);
            System.out.println("The word entered was: " + s);
            System.out.println("The line entered was: " + l);

        }
        catch (InputMismatchException e) {
            System.out.println("\tInvalid input entered. Please enter the specified input");
        }

        scanner.close(); // close the scanner so it doesn't leak
    }
}

Anmerkung: Andere Klassen wie Console y DataInputStream sind ebenfalls praktikable Alternativen.

Console verfügt über einige leistungsstarke Funktionen, wie z. B. die Möglichkeit, Passwörter zu lesen, ist jedoch nicht in allen IDEs (wie z. B. Eclipse) verfügbar. Der Grund dafür ist, dass Eclipse Ihre Anwendung als Hintergrundprozess und nicht als Top-Level-Prozess mit einer Systemkonsole ausführt. Hier ist ein Link zu einem nützlichen Beispiel für die Implementierung der Console Klasse.

DataInputStream wird in erster Linie dazu verwendet, Eingaben als primitiven Datentyp aus einem zugrunde liegenden Eingabestrom maschinenunabhängig zu lesen. DataInputStream wird normalerweise zum Lesen von Binärdaten verwendet. Es bietet auch bequeme Methoden zum Lesen bestimmter Datentypen. Zum Beispiel gibt es eine Methode zum Lesen eines UTF-Strings, der eine beliebige Anzahl von Zeilen enthalten kann.

Allerdings ist diese Klasse komplizierter und schwieriger zu implementieren, so dass sie für Anfänger nicht empfohlen wird. Hier ist ein Link zu einem nützlichen Beispiel für die Implementierung einer DataInputStream .

14voto

user3598655 Punkte 301

Sie können ein einfaches Programm erstellen, das nach dem Namen des Benutzers fragt und ausgibt, was immer die Antwort eingibt.

Oder bitten Sie den Benutzer, zwei Zahlen einzugeben, und Sie können diese Zahlen addieren, multiplizieren, subtrahieren oder dividieren und die Antworten für die Benutzereingaben ausdrucken, genau wie das Verhalten eines Taschenrechners.

Hierfür benötigen Sie die Klasse Scanner. Sie müssen import java.util.Scanner; und im Code müssen Sie Folgendes verwenden

Scanner input = new Scanner(System.in);

Die Eingabe ist ein Variablenname.

Scanner input = new Scanner(System.in);

System.out.println("Please enter your name : ");
s = input.next(); // getting a String value

System.out.println("Please enter your age : ");
i = input.nextInt(); // getting an integer

System.out.println("Please enter your salary : ");
d = input.nextDouble(); // getting a double

Sehen Sie, wie sich das unterscheidet: input.next(); , i = input.nextInt(); , d = input.nextDouble();

Nach einem String, int und double variiert der Rest auf die gleiche Weise. Vergessen Sie nicht die import-Anweisung am Anfang Ihres Codes.

Siehe auch den Blogbeitrag "Scannerklasse und Abrufen von Benutzereingaben" .

9voto

kesun421 Punkte 986

Um eine Zeile oder einen String zu lesen, können Sie eine BufferedReader Objekt kombiniert mit einem InputStreamReader eine wie folgt:

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();

8voto

Miasar Punkte 81

Hier fordert das Programm den Benutzer auf, eine Zahl einzugeben. Danach gibt das Programm die Ziffern der Zahl und die Summe der Ziffern aus.

import java.util.Scanner;

public class PrintNumber {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = 0;
        int sum = 0;

        System.out.println(
            "Please enter a number to show its digits");
        num = scan.nextInt();

        System.out.println(
            "Here are the digits and the sum of the digits");
        while (num > 0) {
            System.out.println("==>" + num % 10);
            sum += num % 10;
            num = num / 10;   
        }
        System.out.println("Sum is " + sum);            
    }
}

5voto

mans.luv.2.code Punkte 69

Hier ist Ihr Programm aus der Frage mit java.util.Scanner :

import java.util.Scanner;

public class Example {
    public static void main(String[] args) {
        int input = 0;
        System.out.println("The super insano calculator");
        System.out.println("enter the corrosponding number:");
        Scanner reader3 = new Scanner(System.in);
        System.out.println(
            "1. Add | 2. Subtract | 3. Divide | 4. Multiply");

        input = reader3.nextInt();

        int a = 0, b = 0;

        Scanner reader = new Scanner(System.in);
        System.out.println("Enter the first number");
        // get user input for a
        a = reader.nextInt();

        Scanner reader1 = new Scanner(System.in);
        System.out.println("Enter the scend number");
        // get user input for b
        b = reader1.nextInt();

        switch (input){
            case 1:  System.out.println(a + " + " + b + " = " + add(a, b));
                     break;
            case 2:  System.out.println(a + " - " + b + " = " + subtract(a, b));
                     break;
            case 3:  System.out.println(a + " / " + b + " = " + divide(a, b));
                     break;
            case 4:  System.out.println(a + " * " + b + " = " + multiply(a, b));
                     break;
            default: System.out.println("your input is invalid!");
                     break;
        }
    }

    static int      add(int lhs, int rhs) { return lhs + rhs; }
    static int subtract(int lhs, int rhs) { return lhs - rhs; }
    static int   divide(int lhs, int rhs) { return lhs / rhs; }
    static int multiply(int lhs, int rhs) { return lhs * rhs; }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X