it-swarm.com.de

Wie kann ich die Benutzereingaben in Java erhalten?

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

Wie kann ich die Benutzereingaben in Java erhalten?

276
Jtvd78

Eine der einfachsten Möglichkeiten ist die Verwendung eines Scanner-Objekts wie folgt:

import Java.util.Scanner;

Scanner reader = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter a number: ");
int n = reader.nextInt(); // Scans the next token of the input as an int.
//once finished
reader.close();
369
Marco Aviles

Sie können je nach Anforderungen eine der folgenden Optionen verwenden.

Scanner class

import Java.util.Scanner; 
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();

BufferedReader und InputStreamReader classes

import Java.io.BufferedReader;
import Java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(br.readLine());

DataInputStream class

import Java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();

Die readLine-Methode aus der DataInputStream-Klasse wurde deprecated. Um den String-Wert zu erhalten, sollten Sie die vorherige Lösung mit BufferedReader verwenden


Console class

import Java.io.Console;
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());

Anscheinend funktioniert diese Methode in einigen IDEs nicht gut.

297
Richie

Sie können die Klasse Scanner oder die Klasse Console verwenden

Console console = System.console();
String input = console.readLine("Enter input:");
44
objects

Sie können Benutzereingaben mit BufferedReader erhalten.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String accStr;  

System.out.println("Enter your Account number: ");
accStr = br.readLine();

Es speichert einen String-Wert in accStr, so dass Sie ihn mit Integer.parseInt in eine int parsen müssen.

int accInt = Integer.parseInt(accStr);
19
Chirag

So erhalten Sie die Tastatureingaben:

Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");  
name = scanner.next(); // Get what the user types.
16
Abdel Raoof

Sie können ein einfaches Programm erstellen, um den Benutzernamen abzufragen und die Eingaben der Antwort zu drucken.

Oder bitten Sie den Benutzer, zwei Zahlen einzugeben, und Sie können diese Zahlen hinzufügen, multiplizieren, subtrahieren oder unterteilen und die Antworten für Benutzereingaben wie ein Taschenrechner-Verhalten ausdrucken.

Also brauchst du Scanner Klasse. Sie müssen import Java.util.Scanner; und den Code verwenden, den Sie verwenden müssen 

Scanner input = new Scanner(System.in);

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();

Entsprechend einem String variieren int und ein double für den Rest auf dieselbe Weise. Vergessen Sie nicht die Import-Anweisung oben in Ihrem Code.

Siehe auch den Blogbeitrag "Scanner-Klasse und Benutzereingaben abrufen" .

15
user3598655

Um eine Zeile oder einen String zu lesen, können Sie ein BufferedReader-Objekt in Kombination mit einer InputStreamReader-Objekt wie folgt verwenden:

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

Hier fordert das Programm den Benutzer auf, eine Nummer einzugeben. Danach druckt das Programm die Ziffern der Nummer und die Summe der Ziffern.

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);            
    }
}
8
Miasar

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; }
}
6
user2505442

Nur noch ein Detail. Wenn Sie kein Speicher-/Ressourcenleck riskieren möchten, sollten Sie den Scanner-Stream schließen, wenn Sie fertig sind:

myScanner.close();

Beachten Sie, dass Java 1.7 und höher dies als Kompilierwarnung abfängt (fragen Sie nicht, woher ich das weiß :-)

5
Dave Hentchel
Scannereingabe = neuer Scanner (System.in);
 int integer = input.nextInt (); 
 String string = input.next (); 
 long longInteger = input.nextLong (); 
5
Arrow

Verwenden Sie die System-Klasse, um die Eingabe abzurufen.

http://fresh2refresh.com/Java-tutorial/Java-input-output/ :

Wie werden Daten von der Tastatur akzeptiert?

Wir brauchen drei Objekte,

  1. System.in
  2. InputStreamReader
  3. BufferedReader

    • InputStreamReader und BufferedReader sind Klassen im Java.io-Paket.
    • Die Daten werden in Form von Bytes von der Tastatur von System.in empfangen, das ein InputStream-Objekt ist.
    • Dann liest der InputStreamReader Byte und dekodiert sie in Zeichen.
    • Anschließend liest das BufferedReader-Objekt schließlich Text aus einem Zeicheneingabestrom und puffert die Zeichen, um ein effizientes Lesen von Zeichen, Arrays und Zeilen zu ermöglichen.
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);
5
Surendren
import Java.util.Scanner; 

class Daytwo{
    public static void main(String[] args){
        System.out.println("HelloWorld");

        Scanner reader = new Scanner(System.in);
        System.out.println("Enter the number ");

        int n = reader.nextInt();
        System.out.println("You entered " + n);

    }
}
4
coder

Die besten zwei Optionen sind BufferedReader und Scanner

Die am weitesten verbreitete Methode ist Scanner und ich persönlich bevorzuge sie aufgrund ihrer Einfachheit und einfachen Implementierung sowie ihres mächtigen Nutzens zum Parsen von Text in primitive Daten.

Vorteile des Scanners 

  • Einfach, die Scanner-Klasse zu verwenden
  • Einfache Eingabe von Zahlen (int, short, byte, float, long und double)}
  • Ausnahmen sind nicht geprüft, was bequemer ist. Es ist Sache des Programmierers, zivilisiert zu werden und Ausnahmen festzulegen oder zu fangen.
  • Kann Zeilen, Leerzeichen und durch reguläre Ausdrücke getrennte Token lesen

Vorteile von BufferedInputStream


Insgesamt hat jede Eingabemethode unterschiedliche Zwecke. 

  • Wenn Sie eine große Datenmenge eingeben, könnte BufferedReader Für Sie besser sein

  • Wenn Sie viele Zahlen eingeben, führt Scanner die automatische Analyse durch Dies ist sehr praktisch

Für weitere grundlegende Anwendungen würde ich die Scanner empfehlen, da sie einfacher zu verwenden ist und Programme leichter schreiben kann. Hier ist ein schnelles Beispiel, wie Sie eine Scanner erstellen. Ich werde im Folgenden ein umfassendes Beispiel für die Verwendung der Scanner geben.

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

(Weitere Informationen zu BufferedReader finden Sie unter So verwenden Sie einen BufferedReader und siehe Lesezeilen von Zeichen )


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
    }
}

Hinweis: Andere Klassen wie Console und DataInputStream sind ebenfalls mögliche Alternativen.

Console verfügt über einige leistungsstarke Funktionen, z. B. das Lesen von Kennwörtern, 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 Prozess der obersten Ebene mit einer Systemkonsole ausführt. Hier ist ein Link zu einem nützlichen Beispiel zur Implementierung der Console-Klasse.

DataInputStream wird hauptsächlich verwendet, um 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, um einen UTF-String zu lesen, der eine beliebige Anzahl von Zeilen enthalten kann.

Es ist jedoch eine kompliziertere Klasse, die schwieriger zu implementieren ist und daher für Anfänger nicht empfohlen wird. Hier ist ein Link zu einem nützlichen Beispiel, wie eine DataInputStream implementiert wird.

3
JFreeman

Hier ist eine weiterentwickelte Version der akzeptierten Antwort, die zwei allgemeine Bedürfnisse anspricht:

  • Sammeln von Benutzereingaben wiederholt, bis ein Beendigungswert eingegeben wurde
  • Umgang mit ungültigen Eingabewerten (in diesem Beispiel keine Ganzzahlen)

Code

package inputTest;

import Java.util.Scanner;
import Java.util.InputMismatchException;

public class InputTest {
    public static void main(String args[]) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Please enter integers. Type 0 to exit.");

        boolean done = false;
        while (!done) {
            System.out.print("Enter an integer: ");
            try {
                int n = reader.nextInt();
                if (n == 0) {
                    done = true;
                }
                else {
                    // do something with the input
                    System.out.println("\tThe number entered was: " + n);
                }
            }
            catch (InputMismatchException e) {
                System.out.println("\tInvalid input type (must be an integer)");
                reader.nextLine();  // Clear invalid input from scanner buffer.
            }
        }
        System.out.println("Exiting...");
        reader.close();
    }
}

Beispiel

Please enter integers. Type 0 to exit.
Enter an integer: 12
    The number entered was: 12
Enter an integer: -56
    The number entered was: -56
Enter an integer: 4.2
    Invalid input type (must be an integer)
Enter an integer: but i hate integers
    Invalid input type (must be an integer)
Enter an integer: 3
    The number entered was: 3
Enter an integer: 0
Exiting...

Beachten Sie, dass die fehlerhafte Eingabe ohne nextLine() dieselbe Ausnahme in einer Endlosschleife wiederholt auslöst. Je nach den Umständen können Sie stattdessen next() verwenden, wissen jedoch, dass die Eingabe wie this has spaces mehrere Ausnahmen generiert.

3
MarredCheese

Es ist sehr einfach, Eingaben in Java zu erhalten. Alles, was Sie tun müssen, ist:

import Java.util.Scanner;

class GetInputFromUser
{
    public static void main(String args[])
    {
        int a;
        float b;
        String s;

        Scanner in = new Scanner(System.in);

        System.out.println("Enter a string");
        s = in.nextLine();
        System.out.println("You entered string " + s);

        System.out.println("Enter an integer");
        a = in.nextInt();
        System.out.println("You entered integer " + a);

        System.out.println("Enter a float");
        b = in.nextFloat();
        System.out.println("You entered float " + b);
    }
}
3
akashfugtu
import Java.util.Scanner;

public class Myapplication{
     public static void main(String[] args){
         Scanner in = new Scanner(System.in);
         int a;
         System.out.println("enter:");
         a = in.nextInt();
         System.out.println("Number is= " + a);
     }
}
3
user3503711
Scanner input = new Scanner(System.in);
String inputval = input.next();
3
Scott

Fügen Sie dann throws IOException neben main() hinzu

DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
3
user2299134

Kann so etwas sein ...

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);

    System.out.println("Enter a number: ");
    int i = reader.nextInt();
    for (int j = 0; j < i; j++)
        System.out.println("I love Java");
}
2
Amarjit Datta

Sie können Benutzereingaben wie folgt mit einem BufferedReader erhalten: 

    InputStreamReader inp = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(inp);
    // you will need to import these things.

So wenden Sie sie an

    String name = br.readline(); 

Wenn der Benutzer seinen Namen in die Konsole eingibt, speichert "String name" diese Informationen.

Wenn es sich um eine Nummer handelt, die Sie speichern möchten, sieht der Code folgendermaßen aus:

    int x = Integer.parseInt(br.readLine());

Hop, das hilft!

2
Radek Martinez

Ich mag Folgendes: 

public String readLine(String tPromptString) {
    byte[] tBuffer = new byte[256];
    int tPos = 0;
    System.out.print(tPromptString);

    while(true) {
        byte tNextByte = readByte();
        if(tNextByte == 10) {
            return new String(tBuffer, 0, tPos);
        }

        if(tNextByte != 13) {
            tBuffer[tPos] = tNextByte;
            ++tPos;
        }
    }
}

und zum Beispiel würde ich tun:

String name = this.readLine("What is your name?")
1
Crt

Dies ist ein einfacher Code, der die Funktion System.in.read() verwendet. Dieser Code schreibt nur aus, was eingegeben wurde. Sie können die while-Schleife loswerden, wenn Sie nur einmal Eingaben machen möchten, und Sie können Antworten in einem Zeichenfeld speichern, wenn Sie dies wünschen.

package main;

import Java.io.IOException;

public class Root 
{   
    public static void main(String[] args)
    {
        new Root();
    }

    public Root()
    {
        while(true)
        {
            try
            {
                for(int y = 0; y < System.in.available(); ++y)
                { 
                    System.out.print((char)System.in.read()); 
                }
            }
            catch(IOException ex)
            {
                ex.printStackTrace(System.out);
                break;
            }
        }
    }   
}    
1
Zac

Die Tastatureingabe mit dem Scanner ist möglich, wie andere bekannt gegeben haben. In diesen sehr grafischen Zeiten ist es jedoch sinnlos, einen Rechner ohne grafische Benutzeroberfläche (GUI) zu erstellen.

Im modernen Java bedeutet dies, dass ein JavaFX-Drag-and-Drop-Tool wie Scene Builder verwendet wird, um eine GUI zu erstellen, die der Konsole eines Taschenrechners ähnelt. Beachten Sie, dass die Verwendung von Scene Builder intuitiv einfach ist und keine zusätzlichen Java-Kenntnisse für die Ereignisbehandlungsroutinen erfordert, die Sie möglicherweise bereits haben.

Für Benutzereingaben sollte oben in der GUI-Konsole ein breites TextField angezeigt werden. 

Hier gibt der Benutzer die Nummern ein, für die er Funktionen ausführen soll .. .. Unterhalb des Textfelds haben Sie ein Array von Funktionsschaltflächen, die grundlegende Funktionen ausführen (dh Addieren/Subtrahieren/Multiplizieren/Dividieren und Speicher/Abrufen/Löschen) Sobald die grafische Benutzeroberfläche ausgebreitet ist, können Sie die 'Controller'-Referenzen hinzufügen, die jede Tastenfunktion mit ihrer Java-Implementierung verknüpfen, z. B. einen Aufruf der Methode in der Controller-Klasse Ihres Projekts.

Dieses Video ist ein bisschen alt, zeigt aber immer noch, wie einfach der Scene Builder ist.

0
Trunk

Sie können die Benutzereingaben mit Scanner abrufen. Sie können die korrekte Eingabevalidierung mit den richtigen Methoden für verschiedene Datentypen verwenden, wie next() für String oder nextInt() für Integer

import Java.util.Scanner;

Scanner scanner = new Scanner(System.in);

//reads the input until it reaches the space
System.out.println("Enter a string: ");
String str = scanner.next();
System.out.println("str = " + str);

//reads until the end of line
String aLine = scanner.nextLine();

//reads the integer
System.out.println("Enter an integer num: ");
int num = scanner.nextInt();
System.out.println("num = " + num);

//reads the double value
System.out.println("Enter a double: ");
double aDouble = scanner.nextDouble();
System.out.println("double = " + aDouble);


//reads the float value, long value, boolean value, byte and short
double aFloat = scanner.nextFloat();
long aLong = scanner.nextLong();
boolean aBoolean = scanner.nextBoolean();
byte aByte = scanner.nextByte();
short aShort = scanner.nextShort();

scanner.close();
0
pradipforever