2014-02-07 6 views
0

У меня есть строка, содержащая математическую операцию (программно генерируемый), что-то вродеПроверяющие математические операции в Java

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

Мне нужен метод, который я должен передать эту строку к нему, и он вернется true, если операция действительна иначе, она вернет false. Любые идеи о том, как я могу это достичь?

+0

Сплит двойка стороны на '=', Запустите вычисления и решите –

+0

, если он был сгенерирован _programmatically_, тогда он должен быть проверен при генерации – Baby

+0

Нет @RafaEl, он не может быть проверен, поскольку он генерируется как строка. – Shahe

ответ

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); 
2

Существует прекрасная вещь, называемая парсером выражения инфикса. Вы должны будете написать свой собственный, но если вы посмотрите, как сделать синтаксический анализатор инфиксных выражений, это было бы лучше всего сделать.

Он в основном ищет все: правильный синтаксис, и вы можете его закодировать, чтобы искать математическую валидацию с обеих сторон знака равенства.

+0

См. Также: http://stackoverflow.com/questions/1792261/java-maths-parsing-api –

Смежные вопросы