有没有办法在Java中逐步计算计算?

时间:2016-07-27 19:07:37

标签: java android math arithmetic-expressions operations

我目前正在构建一款Android应用,其中包含一个计算器,不仅可以显示结果,还可以显示结果如何?

是否有任何库或任何方式可以逐步计算下面代码的结果?

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

有很多公式,我试图消除每个公式的每一步打印。我试图找到一种能够打印任何公式的步骤的方法。

1 个答案:

答案 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(首先是括号,然后是分段,然后是乘法,然后是加法,最后是减法)求解方程式
考虑到您将等式作为字符串,首先搜索(),然后求解/并打印答案,然后*+-