有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析代数表达式以查找变量

我正在设计一个表达式解析器,我很难弄清楚如何准确地解析变量

它应该能够阅读以下表达式:

(x+2)*(x+3)

2*x^2

x^y

我已经写了一些东西将这些表达式转换成树结构,但我不确定如何识别变量

我想解决这个问题的一种方法是在树中搜索,找到一个角色,然后构建一个可变对象。 要检查指数,我要去变量的父节点,检查它是否是^ 对于系数,我会检查节点的父节点*

还有比这更有效的方法吗?我不确定我会怎么做

x^(2y+1)

下面是我编写的一个实现,它检查正确的节点是否是一个变量,并设置它的系数和指数

        if(n.hasRight())
    {
        if(Character.isLetter(n.getRight().toString().charAt(0)))
        {

            Token o = TokenMap.getMap().get(n.toString());
            if(o instanceof Exponent)
            {
                expon = Double.parseDouble(n.getLeft().toString());

                Node par = n.getParent();
                Token t = TokenMap.getTok(par.toString());
                if(t instanceof Multiply)
                {
                       Token tl = TokenMap.getTok(par.getLeft().toString());
                       if(tl instanceof Exponent)
                       {
                            coeff = Double.parseDouble(par.getRight().toString());           
                       }
                        else
                       {
                           coeff = Double.parseDouble(par.getLeft().toString());
                       }

                }
            }
            Variable v = new Variable(n.getRight().toString().charAt(0),expon,coeff);
        } parseVar(new ExpressionTree(n.getRight()));
    }

共 (0) 个答案