【演武厅】表达式求值实例

表达式求值,简要的介绍看(这边)。

这里给出一个简单的Java实现。


import java.util.List;


import javay.math.expr.ExprParser;

import javay.math.expr.Expression;

import javay.math.expr.Token;


public class TestExpr {


  public static void main(String[] args) throws Exception {

    //String str = " 1 + 2 * 3 + 4 / 2+sin(30)--5+(-1)*33.3%+3^2+5!+cos(30) +tan(30) + ln(5) + log(30)+4^2+4^3+exp(100)+1/3";

    String str = "1 + 2 * 3 + 4 / 2"; // 9

//    str = "-5%";

//    str ="2+(8+4^2)*3"; // 74

//    str = "sin(30)";

//    str = "1 + x * 3 + 4 / x";

//    // 逆波兰式

//    str = "1 x 3 * + 4 x / +";

//    // 波兰式

//    str = "+ + 1 * x 3 / 4 x";

    str = "negate(-2.0)";

    str = "sin(sin(2.0))";


//    ExpressionV x = Variables.create("x");

//    x.setVariableValue(new BigNum("2.0"));

//    System.out.println(x);


    List<Token> ts = ExprParser.parse(str);

    System.out.println("中缀式" + ts);

//    Expression expr1 = ExprParser.toExprFromInfix(ts, 0);

    List<Token> pots = ExprParser.toPostfix(ts);

    System.out.println("逆波兰式" + pots);

    Expression expr = ExprParser.toExprFromPostfix(pots);


//    List<Token> prts = ExprParser.toPrefix(ts);

//    Expression expr = ExprParser.toExprFromPrefix(prts);

    System.out.println("[outPRE]" + expr.toPrefixString() + "=" + expr.value());

    System.out.println("[outIN ]" + expr.toInfixString() + "=" + expr.value());

    System.out.println("[outPOS]" + expr.toPostfixString() + "=" + expr.value());

    System.out.println("[out   ]" + expr.toString() + "=" + expr.value());

  }


}


源代码链接:http://git.oschina.net/dubenju/encv/tree/master/src/java/javay/math/expr


转载于:https://my.oschina.net/dubenju/blog/655501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值