Ich habe versucht, einen Taschenrechner zu erstellen, aber ich kann ihn nicht zum Laufen bringen, weil ich nicht weiß wie man Benutzereingaben erhält .
Wie kann ich die Benutzereingabe in Java erhalten?
Ich habe versucht, einen Taschenrechner zu erstellen, aber ich kann ihn nicht zum Laufen bringen, weil ich nicht weiß wie man Benutzereingaben erhält .
Wie kann ich die Benutzereingabe in Java erhalten?
Die beiden besten Optionen sind BufferedReader
y Scanner
.
Die am weitesten verbreitete Methode ist Scanner
und ich persönlich bevorzuge es wegen seiner Einfachheit und leichten Implementierung sowie seiner leistungsstarken Funktion zum Parsen von Text in primitive Daten.
Vorteile der Verwendung eines Scanners
Scanner
クラスVorteile von BufferedInputStream
Scanner
zwischen den Fäden )Insgesamt hat jede Eingabemethode einen anderen Zweck.
Wenn Sie eine große Menge an Daten eingeben BufferedReader
sein könnte besser für Sie
Wenn Sie viele Zahlen eingeben Scanner
übernimmt das automatische Parsing was sehr praktisch ist
Für einfachere Anwendungen empfehle ich die Scanner
weil es einfacher zu benutzen und einfacher zu programmieren ist. Hier ist ein kurzes Beispiel für die Erstellung einer Scanner
. Im Folgenden werde ich ein umfassendes Beispiel für die Verwendung der Scanner
Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name"); // prompt user
name = scanner.next(); // get user input
(Für weitere Informationen über BufferedReader
siehe Wie man einen BufferedReader verwendet und sehen Lesen von Zeichenketten )
import java.util.InputMismatchException; // import the exception catching class
import java.util.Scanner; // import the scanner class
public class RunScanner {
// main method which will run your program
public static void main(String args[]) {
// create your new scanner
// Note: since scanner is opened to "System.in" closing it will close "System.in".
// Do not close scanner until you no longer want to use it at all.
Scanner scanner = new Scanner(System.in);
// PROMPT THE USER
// Note: when using scanner it is recommended to prompt the user with "System.out.print" or "System.out.println"
System.out.println("Please enter a number");
// use "try" to catch invalid inputs
try {
// get integer with "nextInt()"
int n = scanner.nextInt();
System.out.println("Please enter a decimal"); // PROMPT
// get decimal with "nextFloat()"
float f = scanner.nextFloat();
System.out.println("Please enter a word"); // PROMPT
// get single word with "next()"
String s = scanner.next();
// ---- Note: Scanner.nextInt() does not consume a nextLine character /n
// ---- In order to read a new line we first need to clear the current nextLine by reading it:
scanner.nextLine();
// ----
System.out.println("Please enter a line"); // PROMPT
// get line with "nextLine()"
String l = scanner.nextLine();
// do something with the input
System.out.println("The number entered was: " + n);
System.out.println("The decimal entered was: " + f);
System.out.println("The word entered was: " + s);
System.out.println("The line entered was: " + l);
}
catch (InputMismatchException e) {
System.out.println("\tInvalid input entered. Please enter the specified input");
}
scanner.close(); // close the scanner so it doesn't leak
}
}
Anmerkung: Andere Klassen wie Console
y DataInputStream
sind ebenfalls praktikable Alternativen.
Console
verfügt über einige leistungsstarke Funktionen, wie z. B. die Möglichkeit, Passwörter zu lesen, ist jedoch nicht in allen IDEs (wie z. B. Eclipse) verfügbar. Der Grund dafür ist, dass Eclipse Ihre Anwendung als Hintergrundprozess und nicht als Top-Level-Prozess mit einer Systemkonsole ausführt. Hier ist ein Link zu einem nützlichen Beispiel für die Implementierung der Console
Klasse.
DataInputStream
wird in erster Linie dazu verwendet, Eingaben als primitiven Datentyp aus einem zugrunde liegenden Eingabestrom maschinenunabhängig zu lesen. DataInputStream
wird normalerweise zum Lesen von Binärdaten verwendet. Es bietet auch bequeme Methoden zum Lesen bestimmter Datentypen. Zum Beispiel gibt es eine Methode zum Lesen eines UTF-Strings, der eine beliebige Anzahl von Zeilen enthalten kann.
Allerdings ist diese Klasse komplizierter und schwieriger zu implementieren, so dass sie für Anfänger nicht empfohlen wird. Hier ist ein Link zu einem nützlichen Beispiel für die Implementierung einer DataInputStream
.
Sie können ein einfaches Programm erstellen, das nach dem Namen des Benutzers fragt und ausgibt, was immer die Antwort eingibt.
Oder bitten Sie den Benutzer, zwei Zahlen einzugeben, und Sie können diese Zahlen addieren, multiplizieren, subtrahieren oder dividieren und die Antworten für die Benutzereingaben ausdrucken, genau wie das Verhalten eines Taschenrechners.
Hierfür benötigen Sie die Klasse Scanner. Sie müssen import java.util.Scanner;
und im Code müssen Sie Folgendes verwenden
Scanner input = new Scanner(System.in);
Die Eingabe ist ein Variablenname.
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name : ");
s = input.next(); // getting a String value
System.out.println("Please enter your age : ");
i = input.nextInt(); // getting an integer
System.out.println("Please enter your salary : ");
d = input.nextDouble(); // getting a double
Sehen Sie, wie sich das unterscheidet: input.next();
, i = input.nextInt();
, d = input.nextDouble();
Nach einem String, int und double variiert der Rest auf die gleiche Weise. Vergessen Sie nicht die import-Anweisung am Anfang Ihres Codes.
Siehe auch den Blogbeitrag "Scannerklasse und Abrufen von Benutzereingaben" .
Hier fordert das Programm den Benutzer auf, eine Zahl einzugeben. Danach gibt das Programm die Ziffern der Zahl und die Summe der Ziffern aus.
import java.util.Scanner;
public class PrintNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 0;
int sum = 0;
System.out.println(
"Please enter a number to show its digits");
num = scan.nextInt();
System.out.println(
"Here are the digits and the sum of the digits");
while (num > 0) {
System.out.println("==>" + num % 10);
sum += num % 10;
num = num / 10;
}
System.out.println("Sum is " + sum);
}
}
Hier ist Ihr Programm aus der Frage mit java.util.Scanner
:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
int input = 0;
System.out.println("The super insano calculator");
System.out.println("enter the corrosponding number:");
Scanner reader3 = new Scanner(System.in);
System.out.println(
"1. Add | 2. Subtract | 3. Divide | 4. Multiply");
input = reader3.nextInt();
int a = 0, b = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Enter the first number");
// get user input for a
a = reader.nextInt();
Scanner reader1 = new Scanner(System.in);
System.out.println("Enter the scend number");
// get user input for b
b = reader1.nextInt();
switch (input){
case 1: System.out.println(a + " + " + b + " = " + add(a, b));
break;
case 2: System.out.println(a + " - " + b + " = " + subtract(a, b));
break;
case 3: System.out.println(a + " / " + b + " = " + divide(a, b));
break;
case 4: System.out.println(a + " * " + b + " = " + multiply(a, b));
break;
default: System.out.println("your input is invalid!");
break;
}
}
static int add(int lhs, int rhs) { return lhs + rhs; }
static int subtract(int lhs, int rhs) { return lhs - rhs; }
static int divide(int lhs, int rhs) { return lhs / rhs; }
static int multiply(int lhs, int rhs) { return lhs * rhs; }
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.