2016-07-27 51 views
0

我目前正在構建一款安卓應用程序,其中有一個計算器,它不僅顯示結果,還顯示它是如何達到該結果的?有沒有辦法顯示一步一步計算Java中的計算?

是否有任何庫或任何方式,我可以顯示一步一步計算下面的代碼結果?

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

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

編輯:順便說一下,這是一個物理計算器,所以我有很多的公式。我使用exp4j來解析字符串公式作爲表達式。這裏是一個樣本

//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 

有很多公式,我試圖消除打印每個公式的每一步。我試圖找到一種方法來打印任何公式的步驟。

+0

你想要特別的這個結果,還是你希望它成爲任何算術計算的一般? – Brick

+0

對於任何算術計算 –

+0

請添加樣本輸入和輸出。 –

回答

0

考慮您將使用BODMAS來解決這個問題,你可以考慮簡單的打印每一步:

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) 

要做到這一點,你可以建立其搜索括號第一和解決方程函數在根據BODMAS(括號先,然後除法,再乘法,再加法,最後減法)
考慮到將方程作爲一個字符串,首先搜索(),然後解決/並打印答案,然後再輸入*,+-

+0

這是我的初始解決方案。我目前正在嘗試這一個,但它不適合我。無論如何,在我的邏輯中可能會出現錯誤。謝謝! –

+0

非常歡迎! –

+0

這似乎並沒有回答這個問題,因爲OP回答我的問題表明他想要一個通用計算的通用解決方案。這需要你爲每個計算單獨編寫新的代碼... – Brick