2016-07-27 108 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