我有一个包含数学运算的字符串(以编程方式生成),类似于
(1000 + 700) * (50 + 25) = (10000 - 5000) // it's an example
我需要一个方法,我必须将此字符串传递给它,如果操作有效,它将返回true,否则它将返回false。有关如何实现这一目标的任何想法?
答案 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);