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?
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?
Antworten:
Sie können je nach den Anforderungen eine der folgenden Optionen verwenden.
Scanner
Klasseimport java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
BufferedReader
und InputStreamReader
Klassenimport 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
Klasseimport java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();
Die readLine
Methode aus der DataInputStream
Klasse ist veraltet . Um den String-Wert zu erhalten, sollten Sie die vorherige Lösung mit BufferedReader verwenden
Console
Klasseimport 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.
DataInputStream
zum Lesen von Binärdaten dient. Mit readInt
auf System.in
sich nicht eine ganze Zahl von den Zeichendaten analysieren, wird es stattdessen neu zu interpretieren , die Unicode - Werte und Rückkehr Unsinn. Siehe DataInput#readInt
für Details ( DataInputStream
Geräte DataInput
).
Eine der einfachsten Möglichkeiten besteht darin, ein Scanner
Objekt 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();
Scanner reader1 = new Scanner(System.in);
?
Sie können die Scannerklasse oder die Konsolenklasse verwenden
Console console = System.console();
String input = console.readLine("Enter input:");
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 String
Wert in gespeichert, accStr
sodass Sie ihn zu einer int
Verwendung analysieren müssen Integer.parseInt
.
int accInt = Integer.parseInt(accStr);
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.
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" .
Die besten zwei Optionen sind BufferedReader
und Scanner
.
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 Sie
Wenn Sie viele Zahlen Scanner
eingeben, wird automatisch analysiert, was sehr praktisch ist
Fü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 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 BufferedReader
Sie unter Verwenden eines BufferedReader und Lesen von Zeichenzeilen. )
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 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 der Console
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
.
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 Console
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.
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);
}
}
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; }
}
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/ :
Wie werden Daten von der Tastatur akzeptiert?
Wir brauchen drei Objekte,
- System.in
- InputStreamReader
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);
System.in
(in der ersten Codezeile) enthält Großbuchstaben S
für den Klassennamen.
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ß :-)
Hier ist eine weiterentwickelte Version der akzeptierten Antwort, die zwei allgemeine Anforderungen erfüllt:
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 spaces
mehrere Ausnahmen generieren.
In throws IOException
neben main()
, dann
DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
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);
}
}
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);
}
}
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!
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");
}
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;
}
}
}
}
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?")
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...");
}
}
}
}
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 String
oder 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();
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.
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);
}
}
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
args
ohne zuerst die Länge dieses Arrays zu überprüfen: downvote.
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.
Scanner
sehr gut verfügbar ist.