1
xlui 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 1
|
4
chocotan 2019-04-15 09:36:38 +08:00 1
MathParser.org-mXparser
|
5
lihongjie0209 2019-04-15 09:38:24 +08:00 1
直接调用 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 1
不行自己用两个栈写一个😂😂😂
|
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?
|