Wie bekomme ich die Benutzereingaben in Java?


317

Ich habe versucht, einen Taschenrechner zu erstellen, kann ihn jedoch nicht zum Laufen bringen, da ich nicht weiß, wie ich Benutzereingaben erhalten kann .

Wie kann ich die Benutzereingaben in Java erhalten?


8
Äh, was ist deine Frage? Sie haben gerade einen Code gepostet und gesagt, dass Sie keine Zeiger mögen. Wenn Sie Zeiger nicht verstehen, können Sie immer noch zurückkommen, um Sie in Java zu beißen, wenn Sie nicht verstehen, wie man als Referenz und als Wert weitergibt.
Scott

4
Sie sollten versuchen, Java zu lernen, indem Sie ein Buch lesen, Java How to Program, 7 / e ist eine schöne
Marco Aviles

Antworten:


333

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

Scanner Klasse

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

BufferedReaderund InputStreamReaderKlassen

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

DataInputStream Klasse

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

Die readLineMethode aus der DataInputStreamKlasse ist veraltet . Um den String-Wert zu erhalten, sollten Sie die vorherige Lösung mit BufferedReader verwenden


Console Klasse

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.


4
Beachten Sie, dass dies DataInputStreamzum Lesen von Binärdaten dient. Mit readIntauf System.insich nicht eine ganze Zahl von den Zeichendaten analysieren, wird es stattdessen neu zu interpretieren , die Unicode - Werte und Rückkehr Unsinn. Siehe DataInput#readIntfür Details ( DataInputStreamGeräte DataInput).
Radiodef

3
Das ist großartig. Ich würde gerne sehen, dass die erforderlichen Importe der Vollständigkeit halber hinzugefügt werden. Es würde auch wirklich denen helfen, die es brauchen.
KnightHawk

1
Diese Antwort wäre viel hilfreicher, wenn sie die tatsächlichen Anforderungen erwähnen würde. Ich habe ein Kopfgeld gestartet, um dies zu beheben.
temporärer_Benutzername

405

Eine der einfachsten Möglichkeiten besteht darin, ein ScannerObjekt wie folgt zu verwenden:

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

13
Wenn Sie ein in System.in geöffnetes Scannerobjekt schließen, können Sie System.in erst wieder öffnen, wenn das Programm beendet ist.
ksnortum

@ksnortum kann ich bis wieder öffnen Scanner reader1 = new Scanner(System.in);?
Abhijit Jagtap

Versuch es. Das glaube ich nicht.
ksnortum

1
Ja, ksnortum ist richtig, Sie erhalten eine NoSuchElementException. Etwas nützliche Frage, warum Sie System.in nach dem Schließen nicht erneut öffnen können .
temporärer_Benutzername

45

Sie können die Scannerklasse oder die Konsolenklasse verwenden

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

55
Ich denke, System.console wird null zurückgeben, wenn dieser Code von Eclipse ausgeführt wird.
Gewinnen Sie Coder

13
Ich glaube, dies wird einen Fehler zurückgeben, der von fast jeder IDE ausgeführt wird. bestätigte, dass IntelliJ das gleiche Problem hat.
Dan Bradbury

1
aber warum ist das eine Null in Eclipse?
Mark W

20

Sie können Benutzereingaben mit erhalten BufferedReader.

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

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

Es wird ein StringWert in gespeichert, accStrsodass Sie ihn zu einer intVerwendung analysieren müssen Integer.parseInt.

int accInt = Integer.parseInt(accStr);

17

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.

14

Sie können ein einfaches Programm erstellen, um nach dem Namen des Benutzers zu fragen und die Eingaben der Antwort zu drucken.

Oder fordern Sie den Benutzer auf, zwei Zahlen einzugeben, und Sie können diese Zahlen addieren, multiplizieren, subtrahieren oder dividieren und die Antworten für Benutzereingaben wie bei einem Taschenrechner ausdrucken.

Da brauchen Sie also die Scannerklasse. Sie müssen import java.util.Scanner;und in dem Code, 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 Sie dieses Bild unterscheidet sich : input.next();, i = input.nextInt();,d = input.nextDouble();

Laut einem String variieren int und double im Übrigen auf die gleiche Weise. Vergessen Sie nicht die Importanweisung oben in Ihrem Code.

Siehe auch den Blog-Beitrag "Scannerklasse und Abrufen von Benutzereingaben" .


12

Die besten zwei Optionen sind BufferedReaderund Scanner.

Die am weitesten verbreitete Methode ist Scannerund ich persönlich bevorzuge sie wegen ihrer Einfachheit und einfachen Implementierung sowie ihres leistungsstarken Dienstprogramms zum Parsen von Text in primitive Daten.

Vorteile der Verwendung des Scanners

  • Einfach die ScannerKlasse zu benutzen
  • Einfache Eingabe von Zahlen (int, short, byte, float, long und double)
  • Ausnahmen sind deaktiviert, was bequemer ist. Es ist Sache des Programmierers, zivilisiert zu sein und die Ausnahmen zu spezifizieren oder zu fangen.
  • Kann Linien, Leerzeichen und durch Regex getrennte Token lesen

Vorteile von BufferedInputStream


Insgesamt hat jede Eingabemethode unterschiedliche Zwecke.

  • Wenn Sie große Datenmengen eingeben, ist dies BufferedReadermöglicherweise besser für Sie

  • Wenn Sie viele Zahlen Scannereingeben, wird automatisch analysiert, was sehr praktisch ist

Für grundlegendere Anwendungen würde ich das empfehlen, Scannerda es einfacher zu verwenden und einfacher zu schreiben ist. Hier ist ein kurzes Beispiel zum Erstellen eines Scanner. Ich werde im Folgenden ein umfassendes Beispiel für die Verwendung von gebenScanner

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

(Weitere Informationen finden BufferedReaderSie unter Verwenden eines BufferedReader und Lesen von Zeichenzeilen. )


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 Consoleund DataInputStreamsind ebenfalls praktikable Alternativen.

Consoleverfügt über einige leistungsstarke Funktionen wie die Fähigkeit zum Lesen von Passwörtern, ist jedoch nicht in allen IDEs verfügbar (z. B. Eclipse). 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 für die Implementierung der ConsoleKlasse.

DataInputStreamwird hauptsächlich verwendet, um Eingaben als primitiven Datentyp aus einem zugrunde liegenden Eingabestream maschinenunabhängig zu lesen. DataInputStreamwird normalerweise zum Lesen von Binärdaten verwendet. Es bietet auch bequeme Methoden zum Lesen bestimmter Datentypen. Beispielsweise verfügt es über eine Methode zum Lesen eines UTF-Strings, der eine beliebige Anzahl von Zeilen enthalten kann.

Es ist jedoch eine kompliziertere Klasse und schwieriger zu implementieren, was Anfängern nicht empfohlen wird. Hier ist ein Link zu einem nützlichen Beispiel für die Implementierung von a DataInputStream.


Ich werde weitermachen und den Gewinner hier anrufen. Meistens eine ziemlich gute Antwort, obwohl ich mir wünschte, sie würde ausführlicher darauf eingehen, wann ich sie verwenden möchte DataInputStream- die Beschreibung dort klingt identisch mit dem Anwendungsfall für Scanner: Lesen von Daten in Grundelemente. Wenn sich jemand in einem Stadium befindet, in dem er nicht weiß, wie er Benutzereingaben erhält, versteht er höchstwahrscheinlich auch nicht, warum einige Teile der Standardbibliothek in bestimmten IDEs nicht verfügbar sind. Sicher ist das bei mir der Fall - warum ist es Consolenicht verfügbar?
temporärer_Benutzername

1
Vielen Dank für Ihr Feedback, das ich zu aktualisieren versucht habe, um weitere Erläuterungen zu erhalten. Siehe quora.com/… und stackoverflow.com/questions/27601520/…
JFreeman

Perfekt. Dies ist genau die Antwort, die diese Frage die ganze Zeit benötigt. Wenn es nur einen Weg gäbe, könnte ich es nach oben bringen.
temporärer_Benutzername

Nun, jeder, der bereit ist, nach unten zu scrollen, wird eine gute Antwort bekommen und langsam wird es nach oben gehen :)
JFreeman

1
Vielen Dank. Detaillierte informative Antwort. Hinzufügen try-with-resourcewürde es besser machen.
Sourabh

8

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

Um eine Zeile oder eine Zeichenfolge zu lesen, können Sie ein BufferedReaderObjekt InputStreamReaderwie folgt mit einem Objekt kombinieren :

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

6

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

3
Es ist nicht erforderlich, so viele ScannerObjekte zu erstellen . man hätte gereicht.
jub0bs

5

Verwenden Sie die SystemKlasse, um die Eingabe zu erhalten.

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 Paket java.io.
    • Die Daten werden von System.in, einem InputStream-Objekt, in Form von Bytes von der Tastatur empfangen.
    • Dann liest der InputStreamReader Bytes und decodiert sie in Zeichen.
    • Schließlich liest das BufferedReader-Objekt Text aus einem Zeicheneingabestream und puffert Zeichen, um das effiziente Lesen von Zeichen, Arrays und Zeilen zu ermöglichen.
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);

1
System.in(in der ersten Codezeile) enthält Großbuchstaben Sfür den Klassennamen.
KNU

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

5

Nur ein zusätzliches Detail. Wenn Sie keinen Speicher- / Ressourcenverlust 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 Kompilierungswarnung abfängt (fragen Sie nicht, woher ich das weiß :-)


Aber nicht, wenn der Scanner für System.in geöffnet ist. Sie können den Scanner in Ihrem Programm nicht erneut für System.in öffnen.
ksnortum

4
Scanner input = new Scanner(System.in);
String inputval = input.next();

4
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

Hier ist eine weiterentwickelte Version der akzeptierten Antwort, die zwei allgemeine Anforderungen erfüllt:

  • Sammeln von Benutzereingaben wiederholt, bis ein Exit-Wert eingegeben wurde
  • Umgang mit ungültigen Eingabewerten (in diesem Beispiel Nicht-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 ohne nextLine()die fehlerhafte Eingabe dieselbe Ausnahme wiederholt in einer Endlosschleife ausgelöst wird. next()Abhängig von den Umständen möchten Sie möglicherweise stattdessen verwenden, wissen jedoch, dass Eingaben wie this has spacesmehrere Ausnahmen generieren.


3

In throws IOExceptionneben main(), dann

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

3

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

das ist gleich. Sie können ein Array immer nur mit dem Datentyp varName [] ODER dem Datentyp [] varName
user2277872 vom

3
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);
     }
}

2

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

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");
}

1

Dies ist ein einfacher Code, der die System.in.read()Funktion verwendet. Dieser Code schreibt einfach alles aus, was eingegeben wurde. Sie können die while-Schleife entfernen, wenn Sie nur einmal Eingaben vornehmen möchten, und Sie können Antworten in einem Zeichenarray 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

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
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("Welcome to the best program in the world! ");
        while (true) {
            System.out.print("Enter a query: ");
            Scanner scan = new Scanner(System.in);
            String s = scan.nextLine();
            if (s.equals("q")) {
                System.out.println("The program is ending now ....");
                break;
            } else  {
                System.out.println("The program is running...");
            }
        }
    }
}

0

Sie können die Benutzereingaben mit abrufen Scanner. Sie können die richtige Eingabevalidierung mit geeigneten Methoden für verschiedene Datentypen wie next()für Stringoder nextInt()für verwenden 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

Der einfachste Weg, um Benutzereingaben zu erhalten, ist die Verwendung des Scanners. Hier ist ein Beispiel, wie es verwendet werden soll:

import java.util.Scanner;
public class main {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int a;
String b;
System.out.println("Type an integer here: ");
a=sc.nextInt();
System.out.println("Type anything here:");
b=sc.nextLine();

Die Codezeile import java.util.Scanner;teilt dem Programm mit, dass der Programmierer Benutzereingaben in seinem Code verwendet. Wie es heißt, importiert es das Scanner-Dienstprogramm. Scanner sc=new Scanner(System.in);Weist das Programm an, die Benutzereingaben zu starten. Nachdem Sie dies getan haben, müssen Sie eine Zeichenfolge oder eine Ganzzahl ohne Wert erstellen und diese dann in die Zeile a=sc.nextInt();oder einfügen a=sc.nextLine();. Dies gibt den Variablen den Wert der Benutzereingaben. Dann können Sie es in Ihrem Code verwenden. Hoffe das hilft.


-1
import java.util.Scanner;

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

        System.out.print("Name : ");
        String name = input.next();
        System.out.print("Last Name : ");
        String lname = input.next();
        System.out.print("Age : ");
        byte age = input.nextByte();

        System.out.println(" " );
        System.out.println(" " );

        System.out.println("Firt Name: " + name);
        System.out.println("Last Name: " + lname);
        System.out.println("      Age: " + age);
    }
}

-1
class ex1 {    
    public static void main(String args[]){
        int a, b, c;
        a = Integer.parseInt(args[0]);
        b = Integer.parseInt(args[1]);
        c = a + b;
        System.out.println("c = " + c);
    }
}
// Output  
javac ex1.java
java ex1 10 20 
c = 30

Die Sanktion für den Zugriff auf Elemente von, argsohne zuerst die Länge dieses Arrays zu überprüfen: downvote.
jub0bs


-1

Die Tastatureingabe mit dem Scanner ist möglich, wie andere gepostet haben. In diesen hochgrafischen Zeiten ist es jedoch sinnlos, einen Taschenrechner ohne grafische Benutzeroberfläche (GUI) zu erstellen.

In modernem Java bedeutet dies, dass Sie ein JavaFX-Drag-and-Drop-Tool wie Scene Builder verwenden , 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 Ereignishandler erfordert, die möglicherweise bereits vorhanden sind.

Für Benutzereingaben sollte sich oben in der GUI-Konsole ein breites TextField befinden.

Hier gibt der Benutzer die Nummern ein, für die er Funktionen ausführen möchte. Unterhalb des TextFields befindet sich eine Reihe von Funktionstasten, die grundlegende Funktionen ausführen (dh Addieren / Subtrahieren / Multiplizieren / Teilen und Speichern / Abrufen / Löschen). Sobald die GUI übersichtlich ist, können Sie die 'Controller'-Referenzen hinzufügen, die jede Schaltflächenfunktion mit ihrer Java-Implementierung verknüpfen, z. B. einen Aufruf der Methode in der Controller-Klasse Ihres Projekts.

Dieses Video ist etwas alt, zeigt aber dennoch, wie einfach Scene Builder zu verwenden ist.


Diese Antwort wurde abgelehnt - kein Grund angegeben. Für mich ist dies die einzige Möglichkeit, Benutzereingaben in eine Java-Anwendung zu erhalten.
Kofferraum

Das ist sehr nützlich, und ich verstehe nicht, warum es abgelehnt wurde. Die aktuellen Antworten und die Kopfgelderklärung implizieren jedoch, dass sie nach einer Antwort für zukünftige Benutzer suchen, die über eine Konsole Eingaben erhalten möchten.
JFreeman

Ich sehe nur keinen Java-Benutzer - außer denjenigen, die mit Code stecken, der in alten Java-Versionen geschrieben wurde -, der eine Verwendung für die Scanner-Tastatureingabe hat. Das letzte Mal beantworte ich einen Kopfgeldbeitrag. . .
Kofferraum

Ich verstehe Ihre Beschwerde vollständig. Ich persönlich glaube, dass Ihre Antwort sehr nützlich ist, daher verstehe ich nicht, warum sie abgelehnt wurde. Ich habe jedoch bei vielen Gelegenheiten Programme geschrieben, die keine GUIs haben, und daher glaube ich, dass der richtige Code für a Scannersehr gut verfügbar ist.
JFreeman

Wenn das OP sagte, es handele sich um einen Prozess mit geringem Overhead (eingebettet?) Mit minimalen oder keinen Bildschirm-E / A, fair genug - Scanner ist das, was sie brauchen. Aber sie sagten nichts dergleichen. Das OP forderte uns im Wesentlichen auf, entweder zu akzeptieren, dass dieser Ausdruck "Benutzereingabe" in erster Linie Tastatureingaben vorschlägt, oder uns aufzufordern, den Ausdruck für uns selbst zu interpretieren. . .
Kofferraum
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.