2015-06-10 4 views
0

Мне нужно написать метод, который принимает три аргумента и арифметическое выражение (или уравнение). Основываясь на уравнении, результат должен быть возвращен. проблема заключается в том, что уравнение задается как строка, которая должна быть преобразована для выполнения арифметики (я запутался, как это сделать). Как мы можем эффективно решить эту проблему в java. Ниже приведен код для этого.Использование языка java для динамического вычисления значения выражения (или уравнения)

public static void main(String[] args) { 
    System.out.println(getResult(2,3,5,"(a+b)*c/(a+c)")); 
} 
static double getResult(int a,int b,int c,String expr) 
{ 
    //double result=(a+b)*c/(a+c); 
    double result=expr; 
    return result; 
} 

Здесь метод GetResult должен принять три целых и уравнение как string.It было бы здорово, если бы кто-то может предложить решение или альтернативный способ эффективно решить эту проблему.

Спасибо всем за ваши предложения. Перезаписанный код, который использует библиотеку Javaluator.

StaticVariableSet<Double> variablelist = new StaticVariableSet<Double>(); 
    variablelist.set("a", 2.0); 
    variablelist.set("b", 3.0); 
    variablelist.set("c", 5.0); 

    System.out.println(new DoubleEvaluator().evaluate("(a+b)*c/(a+c)",variablelist)); 
+1

Каковы ваши ограничения, с точки зрения «разрешено делать X» и «предполагается делать до Y»? Вы можете себе представить, что это было решено раньше многих, много раз. Если вам нужно сделать это как профессионал, вы бы просто захватили одну из многих библиотек. – tucuxi

+0

@tucuxi Спасибо anyways моя проблема решена. Может использовать некоторую библиотеку оценки выражения java –

ответ

0

Вам нужно разобрать строку в правильное выражение, а затем найти значение. Посмотрите на рекурсивный синтаксический анализатор спуска. Вы можете использовать сторонние библиотеки (если вам разрешено это делать)

+0

Спасибо за комментарий. Это простое решение. Есть ли какие-нибудь библиотеки помощи, чтобы сделать это на самом языке. –

+1

Посмотрите на это сообщение SO: http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form –

+0

Thanks.Can использовать некоторую библиотеку оценщиков java-выражений –

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

  • Нет связанных вопросов^_^