?
Mit deinem Ansatz schränkst du dich ein, was die Prioritäten der Rechenoperationen angeht. Klickst du zB 4 + 5 * 3 kommt bei deiner Rechnung 27 raus, das richtige Ergebnis ist allerdings 19.
Die Lösung liegt im Aufbau eines Expression Trees, das heisst, du musst dir eine Datenstruktur überlegen (im Normalfall ein binärer Baum), in der du die einzelnen Operatoren und ihre Argumente ablegst. Um das Ergebnis zu bestimmen musst du erst einmal feststellen, ob das Ergebnis bereits berechenbar ist, oder ob noch weitere Eingaben abgewartet werden müssen.
Der Ausdruck 1+2+3 kann nach jedem Argument ausgerechnet werden, der Ausdruck 1+2*3 allerdings erst nach der Eingabe des zweiten Operanden der Multiplikation.
Ich würde das Problem so lösen, dass intern ein Expression Tree aufgebaut wird, und dass alle Eingaben über die Buttons lediglich zum Aufbau des Baums benutzt werden. Die Aktualisierung des Ergebnisses kann erfolgen, sobald der Baum vollständig ist. Vollständigkeit heisst hier, dass alle Ausdrücke aufgelöst werden können, nicht, dass keine weitere Eingabe mehr möglich ist.
Hier mal die schematische Darstellung eine Expression Trees für den Ausdruck 4 + 5 * 3
+
/ \
4 *
/ \
5 3
Die Abarbeitung beginnt bei der Wurzel (+ = Addition), dessen Summanden der linke und der rechte Teilbaum sind. Der Ausdruck des linken Teilbaums ist die Konstante 4, der des rechten Teilbaums ist wiederum ein Ausdruck (* = Multiplikation) mit den Multiplikanden des linken und rechten Teilbaums (was die Konstanten 5 bzw. 3 sind).
Ich hoffe, das hilft dir etwas weiter, aber es bedeutet wesentlich mehr Arbeit als du wahrscheinlich angenommen hast.