在Java中验证数学运算

时间:2014-02-07 08:09:12

标签: java validation math

我有一个包含数学运算的字符串(以编程方式生成),类似于

(1000 + 700) * (50 + 25) = (10000 - 5000) // it's an example

我需要一个方法,我必须将此字符串传递给它,如果操作有效,它将返回true,否则它将返回false。有关如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:2)

有一个可爱的东西叫做中缀表达式解析器。你必须自己编写,但如果你查看如何做一个最好的中缀表达式解析器。

它基本上可以查找所有内容:正确的语法,您可以对其进行编码以在等号的两边查找数学验证。

答案 1 :(得分:0)

我找到了问题的解决方案,我正在使用@fas http://www.objecthunter.net/exp4j/编写的库

这是一个非常有用的库,您可以像这样使用它:

String left = (1000 + 700) * (50 + 25);
String right = (10000 - 5000);

Calculable calc = new ExpressionBuilder(leftCondition).build();
double result1 = calc.calculate();

calc = new ExpressionBuilder(rightCondition).build();
double result2 = calc.calculate();

System.out.println(result1 + " ------------- " + result2);