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?
Ä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.
import java.io.BufferedReader;import java.io.InputStreamReader;BufferedReader br =newBufferedReader(newInputStreamReader(System.in));String s = br.readLine();int i =Integer.parseInt(s);
import java.io.DataInputStream;DataInputStream dis =newDataInputStream(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
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 =newScanner(System.in);// Reading from System.inSystem.out.println("Enter a number: ");int n = reader.nextInt();// Scans the next token of the input as an int.//once finished
reader.close();
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 =newScanner(System.in);
Eingabe ist ein Variablenname.
Scanner input =newScanner(System.in);System.out.println("Please enter your name : ");
s = input.next();// getting a String valueSystem.out.println("Please enter your age : ");
i = input.nextInt();// getting an integerSystem.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.
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
Bei BufferedInputStream geht es darum, Datenblöcke und nicht jeweils ein Byte einzulesen
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 =newScanner(System.in);// create scannerSystem.out.print("Enter your name");// prompt user
name = scanner.next();// get user input
import java.util.InputMismatchException;// import the exception catching classimport java.util.Scanner;// import the scanner classpublicclassRunScanner{// main method which will run your programpublicstaticvoid 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 =newScanner(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 inputstry{// 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 inputSystem.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?
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;publicclassPrintNumber{publicstaticvoid main(String[] args){Scanner scan =newScanner(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);}}
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.
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ß :-)
import java.util.Scanner;classDaytwo{publicstaticvoid main(String[] args){System.out.println("HelloWorld");Scanner reader =newScanner(System.in);System.out.println("Enter the number ");int n = reader.nextInt();System.out.println("You entered "+ n);}}
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;publicclassInputTest{publicstaticvoid main(String args[]){Scanner reader =newScanner(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 inputSystem.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.Type0 to exit.Enter an integer:12The number entered was:12Enter an integer:-56The number entered was:-56Enter an integer:4.2Invalid input type (must be an integer)Enter an integer: but i hate integers
Invalid input type (must be an integer)Enter an integer:3The number entered was:3Enter an integer:0Exiting...
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.
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;publicclassRoot{publicstaticvoid main(String[] args){newRoot();}publicRoot(){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;}}}}
import java.util.Scanner;publicclassMain{publicstaticvoid main(String[] args){System.out.println("Welcome to the best program in the world! ");while(true){System.out.print("Enter a query: ");Scanner scan =newScanner(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...");}}}}
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 =newScanner(System.in);//reads the input until it reaches the spaceSystem.out.println("Enter a string: ");String str = scanner.next();System.out.println("str = "+ str);//reads until the end of lineString aLine = scanner.nextLine();//reads the integerSystem.out.println("Enter an integer num: ");int num = scanner.nextInt();System.out.println("num = "+ num);//reads the double valueSystem.out.println("Enter a double: ");double aDouble = scanner.nextDouble();System.out.println("double = "+ aDouble);//reads the float value, long value, boolean value, byte and shortdouble aFloat = scanner.nextFloat();long aLong = scanner.nextLong();boolean aBoolean = scanner.nextBoolean();byte aByte = scanner.nextByte();short aShort = scanner.nextShort();
scanner.close();
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;publicclass main {publicstaticvoid main(String[]args){Scanner sc=newScanner(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.
class ex1 {publicstaticvoid 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 1020
c =30
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. . .
Antworten:
Sie können je nach den Anforderungen eine der folgenden Optionen verwenden.
Scanner
KlasseBufferedReader
undInputStreamReader
KlassenDataInputStream
KlasseDie
readLine
Methode aus derDataInputStream
Klasse ist veraltet . Um den String-Wert zu erhalten, sollten Sie die vorherige Lösung mit BufferedReader verwendenConsole
KlasseAnscheinend funktioniert diese Methode in einigen IDEs nicht gut.
quelle
DataInputStream
zum Lesen von Binärdaten dient. MitreadInt
aufSystem.in
sich nicht eine ganze Zahl von den Zeichendaten analysieren, wird es stattdessen neu zu interpretieren , die Unicode - Werte und Rückkehr Unsinn. SieheDataInput#readInt
für Details (DataInputStream
GeräteDataInput
).Eine der einfachsten Möglichkeiten besteht darin, ein
Scanner
Objekt wie folgt zu verwenden:quelle
Scanner reader1 = new Scanner(System.in);
?Sie können die Scannerklasse oder die Konsolenklasse verwenden
quelle
Sie können Benutzereingaben mit erhalten
BufferedReader
.Es wird ein
String
Wert in gespeichert,accStr
sodass Sie ihn zu einerint
Verwendung analysieren müssenInteger.parseInt
.quelle
So erhalten Sie die Tastatureingaben:
quelle
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üssenEingabe ist ein Variablenname.
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" .
quelle
Die besten zwei Optionen sind
BufferedReader
undScanner
.Die am weitesten verbreitete Methode ist
Scanner
und 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
Scanner
Klasse zu benutzenVorteile von BufferedInputStream
Scanner
zwischen Threads teilen )Insgesamt hat jede Eingabemethode unterschiedliche Zwecke.
Wenn Sie große Datenmengen eingeben, ist dies
BufferedReader
möglicherweise besser für SieWenn Sie viele Zahlen
Scanner
eingeben, wird automatisch analysiert, was sehr praktisch istFür grundlegendere Anwendungen würde ich das empfehlen,
Scanner
da es einfacher zu verwenden und einfacher zu schreiben ist. Hier ist ein kurzes Beispiel zum Erstellen einesScanner
. Ich werde im Folgenden ein umfassendes Beispiel für die Verwendung von gebenScanner
(Weitere Informationen finden
BufferedReader
Sie unter Verwenden eines BufferedReader und Lesen von Zeichenzeilen. )java.util.Scanner
Hinweis: Andere Klassen wie
Console
undDataInputStream
sind ebenfalls praktikable Alternativen.Console
verfü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 derConsole
Klasse.DataInputStream
wird hauptsächlich verwendet, um Eingaben als primitiven Datentyp aus einem zugrunde liegenden Eingabestream maschinenunabhängig zu lesen.DataInputStream
wird 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
.quelle
DataInputStream
- die Beschreibung dort klingt identisch mit dem Anwendungsfall fürScanner
: 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 esConsole
nicht verfügbar?try-with-resource
würde es besser machen.Hier fordert das Programm den Benutzer auf, eine Nummer einzugeben. Danach druckt das Programm die Ziffern der Nummer und die Summe der Ziffern.
quelle
Um eine Zeile oder eine Zeichenfolge zu lesen, können Sie ein
BufferedReader
ObjektInputStreamReader
wie folgt mit einem Objekt kombinieren :quelle
Hier ist Ihr Programm aus der Frage mit
java.util.Scanner
:quelle
Scanner
Objekte zu erstellen . man hätte gereicht.Verwenden Sie die
System
Klasse, um die Eingabe zu erhalten.http://fresh2refresh.com/java-tutorial/java-input-output/ :
quelle
System.in
(in der ersten Codezeile) enthält GroßbuchstabenS
für den Klassennamen.quelle
Nur ein zusätzliches Detail. Wenn Sie keinen Speicher- / Ressourcenverlust riskieren möchten, sollten Sie den Scanner-Stream schließen, wenn Sie fertig sind:
Beachten Sie, dass Java 1.7 und höher dies als Kompilierungswarnung abfängt (fragen Sie nicht, woher ich das weiß :-)
quelle
quelle
quelle
Hier ist eine weiterentwickelte Version der akzeptierten Antwort, die zwei allgemeine Anforderungen erfüllt:
Code
Beispiel
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 wiethis has spaces
mehrere Ausnahmen generieren.quelle
In
throws IOException
nebenmain()
, dannquelle
Es ist sehr einfach, Eingaben in Java zu erhalten. Alles, was Sie tun müssen, ist:
quelle
quelle
Sie können Benutzereingaben wie folgt mit einem BufferedReader erhalten:
So wenden Sie sie an
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:
Hop das hilft!
quelle
Kann so etwas sein ...
quelle
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.quelle
Ich mag folgendes:
und zum Beispiel würde ich tun:
quelle
quelle
Sie können die Benutzereingaben mit abrufen
Scanner
. Sie können die richtige Eingabevalidierung mit geeigneten Methoden für verschiedene Datentypen wienext()
fürString
odernextInt()
für verwendenInteger
.quelle
Der einfachste Weg, um Benutzereingaben zu erhalten, ist die Verwendung des Scanners. Hier ist ein Beispiel, wie es verwendet werden soll:
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 Zeilea=sc.nextInt();
oder einfügena=sc.nextLine();
. Dies gibt den Variablen den Wert der Benutzereingaben. Dann können Sie es in Ihrem Code verwenden. Hoffe das hilft.quelle
quelle
quelle
args
ohne zuerst die Länge dieses Arrays zu überprüfen: downvote.java ex1
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.
quelle
Scanner
sehr gut verfügbar ist.