Wie kann ich in meinen Script die Zeichen nebeneinander anstatt untereinander eingeben(In der Console) --> (Taschenrechner)?
Wenn ich beispielsweise "5+5" rechnen will, warum kann ich dann nur das so eingeben (sonst kommt eine Fehlermeldung):
5
+
5
Ich möchte aber : 5+5 nur eingeben
Bitte um fertige Code-Vorschläge. Danke schonmal im Vorraus.
Mein Script:
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
import java.util.Scanner;
public class Taschenrechner {
public static void main(String[] args) {
float zahl1;
float zahl2;
float ergebnis = 0;
Scanner eingabe = new Scanner(System.in);
eingabe.useLocale(Locale.GERMANY);
zahl1 = eingabe.nextFloat();
char operator = eingabe.next().charAt(0);
zahl2 = eingabe.nextFloat();
switch(operator) {
case '+':
ergebnis = zahl1 + zahl2;
break;
case '-':
ergebnis = zahl1 - zahl2;
break;
case '/':
ergebnis = zahl1 / zahl2;
break;
case '':
ergebnis = zahl1 * zahl2;
}
DecimalFormat df = new DecimalFormat("#.###");
DecimalFormatSymbols sym = DecimalFormatSymbols.getInstance();
sym.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sym);
System.out.println(df.format(ergebnis));
eingabe.close();
}
}
4 Antworten
Wenn ich beispielsweise "5+5" rechnen will, warum kann ich dann nur das so eingeben (sonst kommt eine Fehlermeldung)
Das liegt daran, dass du drei Abfragen über den Scanner machst. Willst du alles in eine Abfrage kombinieren, so musst du die Zeile als String einlesen und an dem Operator aufteilen:
public static void main(String[] args) {
float ergebnis = 0;
Scanner eingabe = new Scanner(System.in);
eingabe.useLocale(Locale.GERMANY);
String[] zeile = eingabe.nextLine().split("((?<=(\\+|-|\\*|/))|(?=(\\+|-|\\*|/)))");
float zahl1 = Integer.parseInt(zeile[0]);
char operator = zeile[1].charAt(0);
float zahl2 = Integer.parseInt(zeile[2]);
// .....
PS: Der Tag "taschenrechner-programmieren" ist nicht sinnvoll, da ihn kein Antwortgeber verwendet.
PPS: Die Eingabe erfolgt übrigens ohne Leerzeichen.
Der Java Scanner funktioniert nur mit Delimiter, also einem Trennzeichen. Standardmäßig ist das eine Leerzeichen, d.h. dein Programm funktioniert mit der Eingabe "5 + 5".
Wenn du das ohne Trennzeichen machen willst, musst du den String selbst zerlegen.
Wenn ich beispielsweise "5+5" rechnen will, warum kann ich dann nur das so eingeben (sonst kommt eine Fehlermeldung):
Setze Leerzeichen zwischen die Eingabe. Dies ist ein Trennzeichen für den Scanner.
System.out.print
Das beantwortet nicht die Frage.