Wie kann man eine Rechnung bei der Eingabe in eine Zeile bringen (Java Taschenrechner programmieren?

Code - (programmieren, Java, Aufgabe)

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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");
}

}
}

ElisabethO 
Beitragsersteller
 12.11.2016, 23:14

Danke, ich werde mal versuchen das Ganze einzbinden :)

0
FahrradLecker  12.11.2016, 22:59

Musst natürlich noch den Klassennamen anpassen :)

0
FahrradLecker  12.11.2016, 23:00
@FahrradLecker

Interessant wird es natürlich das ganze so umzuschreiben, das man mit mehr als 2 Zahlen rechnen kann^^ Viel Spaß.

0
scopseTV  12.11.2016, 23:12
@FahrradLecker

Hab das mal ausgeführ be mir zeig er ein Fehler bei der operator

String operator = tokens[1];




0
FahrradLecker  12.11.2016, 23:54
@scopseTV

Bei mir gehts^^ Habs mit 2 3 Stelligen Zahlen und +-*/ durchprobiert . ohne Probleme. 

0

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


ElisabethO 
Beitragsersteller
 12.11.2016, 22:42

Sind alle Elemente eines strings char oder können es auch int sein?

0
PerfectMuffin  13.11.2016, 08:59
@ElisabethO

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.

0

Helfen kann ich bei deinem Problem leider nicht, aber wenn es ein Taschenrechner werden soll, warum lässt du dann nicht das Ergebnis ausgeben?


ElisabethO 
Beitragsersteller
 12.11.2016, 22:38

Leider ist es eine Aufgabe und es ist eine Vorraussetzung dass zuerst die ganze Rechnung in einer Zeile steht.

0
ElisabethO 
Beitragsersteller
 12.11.2016, 22:28

Das habe ich noch vor, aber soweit bin ich noch nicht.

0
CryptexHD  12.11.2016, 22:30
@ElisabethO

Ich würde direkt das Ergebnis ausgeben lassen, dann hab ich das Problem nicht und hab direkt die Aufgabe.

0

Du könntest die ganze Zeile als String einlesen ("5 + 6") und dann die einzelnen Zahlen/Symbole auslesen.