Wie kann man eine Rechnung bei der Eingabe in eine Zeile bringen (Java Taschenrechner programmieren?
Hallo! Als Aufgabe muss ich einen Taschenrechner programmieren. Ich schaffe es leider nicht eine ganze Recheneingabe in eine Zeile zu bringen, ich habe es nur geschafft jeden einzelnen Rechenoperator oder Zahl pro Zeile einzugeben. Ich entschuldige mich schonmal im Voraus falls ich die Antworten nicht auf Anhieb verstehe, ich habe erst seit kurzem angefangen zu programmieren.
Veranschaulichung (wie es nicht aussehen soll):
6
+
5
6 + 5
wie es aussehen soll:
6 + 5
In der Abbildung sieht man den Code den ich geschrieben habe und die Ausgabe der Konsole.
5 Antworten
Hab was programmiert^^ Sollte funktionieren:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ZeilenLeser {
public static void main(String[] args) {
//Deklarieren
String rechnung = " ";
//Eingabe erstellen
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("Eingabe");
try {
rechnung= br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
//Eingabe aufsplitten
String[] tokens = rechnung.split("(?<=[-+*/])|(?=[-+*/])");
//Werte auslesen
String zahl1 = tokens[0];
String operator = tokens[1];
String zahl2 = tokens[2];
//String in Integer umwandeln
int zahl1i = Integer.parseInt(zahl1);
int zahl2i = Integer.parseInt(zahl2);
//Rechenoperationen durchführen
if(operator.equals("+")){
System.out.println(zahl1i+zahl2i);
}
else if(operator.equals("-")){
System.out.println(zahl1i-zahl2i);
}
else if(operator.equals("*")){
System.out.println(zahl1i*zahl2i);
}
else if(operator.equals("/")){
System.out.println(zahl1i/zahl2i);
}
//Falls Operator unbekannt
else{
System.out.println("Fehlerhafte Eingabe");
}
}
}
Danke, ich werde mal versuchen das Ganze einzbinden :)
Interessant wird es natürlich das ganze so umzuschreiben, das man mit mehr als 2 Zahlen rechnen kann^^ Viel Spaß.
Hab das mal ausgeführ be mir zeig er ein Fehler bei der operator
String operator = tokens[1];
Bei mir gehts^^ Habs mit 2 3 Stelligen Zahlen und +-*/ durchprobiert . ohne Probleme.
Die ganze Angabe als String einlesen lassen und dann String beim + splitten.
Falls es bei so einer Simplen Rechnung bleiben Soll und nicht mehrere Atribute dazu kommen.
Ansonnten müsstest du dir einen kleinen Algorithmus schreiben oder eine fertige Libary benutzen.
Du findest ansonsten X Java Taschenrechner Sourcecodes oder fertige Libs.
Lies die komplette Zeile und versuch sie zu parsen, wie wäre es damit?
Lies' die APIdoc von java.lang.String
Sind alle Elemente eines strings char oder können es auch int sein?
char. Wobei chars 16Bit integer sind.
Bedenke, dass wenn du in der Konsole "345" eingibst, das in keinster Weise eine Zahl, sondern ein String der Länge 3 ist.
Helfen kann ich bei deinem Problem leider nicht, aber wenn es ein Taschenrechner werden soll, warum lässt du dann nicht das Ergebnis ausgeben?
Leider ist es eine Aufgabe und es ist eine Vorraussetzung dass zuerst die ganze Rechnung in einer Zeile steht.
Das habe ich noch vor, aber soweit bin ich noch nicht.
Ich würde direkt das Ergebnis ausgeben lassen, dann hab ich das Problem nicht und hab direkt die Aufgabe.
Du könntest die ganze Zeile als String einlesen ("5 + 6") und dann die einzelnen Zahlen/Symbole auslesen.
macht man das mit IO.readString()? werden die einzelnen Symbole erkannt dass man damit dann if - else Bedingungen aufstellen kann?
Musst natürlich noch den Klassennamen anpassen :)