2016-07-27 29 views
0

Ich baue gerade eine Android-App, die einen Rechner hat, der nicht nur das Ergebnis zeigt, sondern auch zeigt, wie es zu diesem Ergebnis kam?Gibt es eine Möglichkeit, die schrittweise Berechnung einer Berechnung in Java zu zeigen?

Gibt es irgendeine Bibliothek oder irgendeine Art, wie ich eine Schritt für Schritt Berechnung für das Ergebnis des folgenden Codes zeigen könnte?

int a = 5; 
int b = 6 
int c = 7; 
int d = 8; 

int result = a + (b * c)/d; 

edit: By the way, es ist ein Taschenrechner für Physik, also habe ich viele Formeln. Ich verwende exp4j, um eine String-Formel als Ausdruck zu analysieren. Hier ist ein Beispiel

//For formula velocity = (finalVelocity - initialVelocity)/time 
String formula1 = "(finalVelocity - initialVelocity)/time"; 
Double result1 = new ExpressionBuilder(formula) 
        .variables("finalVelocity", "initialVelocity", "time") 
        .build() 
        .setVariable("finalVelocity", 4); 
        .setVariable("initialVelocity", 2); 
        .setVariable("time", 2) 
        .evaluate(); 
//Sample Output 
//velocity = (4 - 2)/2 
//velocity = 2 /2 
//velocity = 1 

//For formula finalVelocity = (velocity * time) + initialVelocity 
String formula2 = "(velocity * time) + initialVelocity"; 
Double result12 = new ExpressionBuilder(formula) 
        .variables("velocity", "time" "initialVelocity") 
        .build() 
        .setVariable("velocity", 4); 
        .setVariable("time", 2) 
        .setVariable("initialVelocity", 0) 
        .evaluate(); 
//Sample Output 
//finalVelocity = (4 * 2) + 0 
//finalVelocity = 8 + 0 
//finalVelocity = 8 

Mit vielen Formeln, ich versuche, den Ausdruck jedes Schrittes pro Formel zu beseitigen. Ich versuche einen Weg zu finden, eine Funktion zu haben, die die Schritte für jede Formel ausgibt.

+0

Möchten Sie speziell dieses Ergebnis, oder möchten Sie, dass es für eine arithmetische Berechnung allgemein ist? – Brick

+0

Für jede arithmetische Berechnung –

+0

Bitte fügen Sie Beispiel Eingabe und Ausgabe hinzu. –

Antwort

0

Betrachtet werden Sie BODMAS verwenden, dieses Problem zu lösen, könnte man bedenkt, einfach jeden Schritt Druck:

int a = 5; 
int b = 6; 
int c = 7; 
int d = 8; 
int ans = (b * c); 
System.out.println(ans) 
ans /= d; 
System.out.println(ans) 
ans += a; 
System.out.println(ans) 

Um dies zu tun, können Sie eine Funktion erstellen, die zuerst für Konsolen sucht und löst die Gleichungen in der entsprechend BODMAS (Klammern zuerst, dann Division, dann Multiplikation, dann Addition und schließlich Subtraktion).
Wenn Sie die Gleichung als eine Zeichenfolge betrachten, suchen Sie zuerst nach(), lösen dann / und drucken die Antworten, gefolgt von *, + und -.

+0

hinzugefügt Dies war meine erste Lösung. Ich probiere gerade dieses eine aus, aber es funktioniert nicht für mich. Naja, in meiner Logik könnte etwas nicht stimmen. Vielen Dank! –

+0

Herzlich willkommen! –

+0

Es scheint, dass dies die Frage nicht beantwortet, da das OP als Antwort auf meine Frage anzeigte, dass er eine allgemeine Lösung für allgemeine Berechnungen wünschte. Dazu müssen Sie für jede Berechnung separat einen neuen Code schreiben ... – Brick