![]() | 1 akiakiseofficial 2019-04-15 09:34:04 +08:00 via iPhone 据我所知没有,但是你可以搜一搜 中缀表达式转后缀表达式 和 后缀表达式求解。 |
![]() | 2 cnzjl 2019-04-15 09:34:09 +08:00 String s = Integer.toString((1+2*3 )-10/2); |
![]() | 3 AlisaDestiny 2019-04-15 09:34:57 +08:00 ![]() |
![]() | 4 chocotan 2019-04-15 09:36:38 +08:00 ![]() MathParser.org-mXparser |
5 lihongjie0209 2019-04-15 09:38:24 +08:00 ![]() 直接调用 Javascript 执行引擎? |
6 sigup 2019-04-15 09:42:41 +08:00 ```java ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("Javascript"); System.out.println(engine.eval("(1+2*3)-10/2")); ``` 不过要做好校验,否则就是后门了 |
![]() | 7 hoosin 2019-04-15 09:55:10 +08:00 @lihongjie0209 Javascript eval 有安全问题,所以约等于废弃了 |
8 HuHui 2019-04-15 10:02:36 +08:00 via Android jexl 完全满足 |
9 loveCoding 2019-04-15 10:16:36 +08:00 看看这个库 org.apache.commons:commons-jexl3 |
10 loveCoding 2019-04-15 10:16:46 +08:00 @HuHui 没看到你已经发了 |
11 lihongjie0209 2019-04-15 10:17:48 +08:00 |
12 lihongjie0209 2019-04-15 10:19:37 +08:00 @hoosin 或者是内嵌一个 groovy 引擎? |
![]() | 13 BBCCBB 2019-04-15 10:23:56 +08:00 spring 的 spel 模块也可以 |
![]() | 14 nekoneko 2019-04-15 11:30:16 +08:00 可以考虑自己做一个做计算的方法。算法可以参考逆波兰式 |
![]() | 15 rizon 2019-04-15 11:38:50 +08:00 四则运算调用 js 引擎处理也是个选择,甚至通过跑 sql 来计算也是可以的。。 不过常规来说,四则运算解析工具类应该也很多吧。 |
![]() | 16 rizon 2019-04-15 11:43:35 +08:00 |
![]() | 17 stevenbipt 2019-04-15 11:54:10 +08:00 via Android ![]() 不行自己用两个栈写一个 |
18 jlhde123 2019-04-15 12:37:15 +08:00 ANTRL4 |
![]() | 19 liujan 2019-04-15 12:52:21 +08:00 qlexpresss 试下,阿里出的 |
![]() | 20 jinue9900 2019-04-15 13:48:21 +08:00 groovy 可以只要把双引号去掉就 Ok 了 |
21 9684xtpa 2019-04-15 14:01:47 +08:00  用 MVEL 也行 |
22 mrsatangel 2019-04-15 16:35:21 +08:00 推一把 killme2008 的 aviator https://github.com/killme2008/aviator |
![]() | 23 13192262269 OP @AlisaDestiny #3 请问一下,你是怎样搜出来的?我百度输入“ java eval 函数”,找不到这个链接,是必须是要先翻译成英文再搜索吗? |
24 m2276699 2019-04-17 14:18:43 +08:00 sql? |