如何解析操作数和运算符的数学表达式并在不使用正则表达式的情况下解决它?

时间:2013-10-24 04:07:04

标签: java parsing math mathematical-expressions

我有一些数学表达式,如Java字符串(100 % 6)* 7 =Sin(45) + log 100 – 3 ^ 5 =。我想在操作数和运算符上解析它们然后解决它们。

但我不想使用Java正则表达式。什么是最好的解决方案?

2 个答案:

答案 0 :(得分:1)

bison + yacc可能就是你想要的,一个LALR文本解析器。

答案 1 :(得分:1)

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;

public class aaa {



     public static void main(String []args){

        try {


        String xyz = "3*3+3";
        String kkk = "(100 % 6)* 7";

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine se = manager.getEngineByName("JavaScript");        
        Object result1 = se.eval(xyz);
        Object result2 = se.eval(kkk);


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


        } 
        catch (Exception e) {
         e.printStackTrace();
        }
     }

}