Ansonsten gibt es auch schon fertig programmierte Taschenrechner in Java. Dann muss man die auch nicht selbst entwickeln.
Die Frage ist, was man hier erwartet. Wenn es um die Interpretation einer Eingabe geht, dann kann das schon sehr komplex sein. Wenn man sich mit der Auswertung beschäftigen will, dann kann man "leichter" anfangen, indem man z.B. eine Prefix Schreibweise für Operationen implementiert. Dann ist das Parsen um einiges leichter und es gibt keine Probleme mit Punkt vor Strichrechnung und all sowas.
Also statt 3 + 4 + 5 wäre die Schreibweise + + 3 4 5 (Also erst 3 + 4 und dann + 5)
Sowas ist recht einfach zu Parsen, da Du einen relativ einfachen Baum hast. Der Baum hat Knoten aus Operatoren (die alle eine feste Nummer an Unterelementen hat) oder eben ein Blatt, das immer eine Zahl sein muss.
Also parst Du einfach, indem du den String von vorne nach hinten durchgehst (Das ist hier schön möglich!)
Du könntest hier einen Tokenizer schreiben, der Eingaben erst einmal in Token verwandelt. Bei + + 3 4 5 wären das die Token "Operator +, "Operator +, Zahl 3, Zahl 4 und Zahl 5.
Wenn Du dann die Token hast, dann brauchst Du auf den Token eine "getNextToken" oder so. Und dann baust Du den Operations-Baum einfach auf:
Der Parse hat dann eine Funktion, die die Token-Liste bekommt und einen (Teil)-Baum zurück gibt.
In diesem Fall würde der Parser dann das Token der Operation + sehen und einen Additions-Knoten erzeugen. Dann wird im Knoten das Parse aufgerufen. Dieses ruft dann einfach erneut dieses Parse Funktion auf und bekommt dann halt wieder ein Additions-Knoten u.s.w.
Der Baum hat dann einen Additionsknoten mit zwei Unterknoten. Der erste Unterknoten ist dann wieder eine Addition mit den Zwei Unterknoten 3 und 4 und der zweite Unterknoten ist dann die 5.
Calculate() auf dem Knoten ist dann eine Funktion, die jeder Knoten haben muss. Bei der addition wird dann halt calculate auf beiden Unterknoten aufgerufen und die Addition beider Ergebnisse zurück gegeben. Bei einem Zahlenknoten wird nur die Zahl zurück gegeben.
Ich hoffe, die Erklärung war halbwegs verständlich. Das wäre eine Implementation, die man selbst recht gut bauen kann.
Alle anderen Dinge sind etwas komplizierter. Die Infix Notation, die wir gewohnt sind, macht alles deutlich komplexer und ist als eine einfache Aufgabe deutlich zu komplex. Wenn dies aber eine Sache ist, die dich interessiert, dann würde ich Dir das Drachenmodel empfehlen (Wobei ich nicht sicher bin, ob das noch aktuell ist. Ich habe mich damit halt vor über 20 Jahren beschäftigt und damals ein Buch mit zwei Bänden dazu durchgearbeitet.) Was ich diesbezüglich gefunden habe wäre z.B.
http://dragonbook.stanford.edu/
Man kann natürlich einfach die angebotenen Tools verwenden, ohne zu verstehen, was die genau machen, aber ist etwas, das mir oft widerstrebt. Denn wenn es Probleme und Nebeneffekte gibt, möchte ich diese ja schon verstehen und meine Lösung voll supporten. (Für eine kleine Aufgabe ist dies natürlich nicht so relevant wie bei einem Produkt, welches eingesetzt wird und für den es einen 3rd Level Support gibt der alle Fälle abhandeln können muss.)
(Diesen Parser für Präfix Notation haben wir damals übrigens auch im Rahmen des Informatik Unterrichts geschrieben. Das ist also eine Sache, die sehr gut und einfach in dem kleineren Rahmen möglich ist!)
Konrad