或者市面上有没有开箱即用的 jar
例如计算
String str = “1+23-4+(4/2)^25+(4/2)^2*2.222E-6”;
如何计算呢。。。
1
zydxn 2020 年 2 月 26 日 ScriptEngineManager
|
2
Perci 2020 年 2 月 26 日 via Android
用夹娃实现计算器
|
3
zydxn 2020 年 2 月 26 日
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName ("JavaScript"); final Object eval = engine.eval("1 + 23 - 4 + (4/2)^25 + (4/2)^2*2.222E-6"); System.out.println(eval); |
4
lqs 2020 年 2 月 26 日
内嵌一个 JS 或 Python 解释器(记得先把 ^替换成**)
|
5
zjsxwc 2020 年 2 月 26 日
这表达式是科学计算器的语法,js 也不支持幂运算,直接调用命令行获取运算结果呗
``` $octave --eval "1+23-4+(4/2)^25+(4/2)^2*2.222E-6" ans = 3.3554e+07 ``` |
6
zjsxwc 2020 年 2 月 26 日
|
8
kerie 2020 年 2 月 26 日 ScriptEngineManager 太重了,可以用 exp4j。
https://www.objecthunter.net/exp4j/ |
9
xwbz2018 2020 年 2 月 26 日 via Android <groupId>org.scijava</groupId>
<artifactId>jep</artifactId> 我用的这个,可以自定义函数 |
11
liujan 2020 年 2 月 26 日 via iPhone
qlexpress 试试
|
12
leishi1313 2020 年 2 月 26 日 via Android 老有人说做算法题没用,你把这俩题结合起来不就是你的需求了:
https://leetcode.com/problems/valid-number/ https://leetcode.com/problems/basic-calculator-ii/ |
13
qyvlik 2020 年 2 月 26 日
可以参考这个项目 https://github.com/qyvlik/formula,支持变量替换计算。
具体是使用 JVM 自带的 ScriptEngine,移除 ScriptEngine 内的 `quit` 等有全局影响的函数, 创建可以参考如下: https://github.com/qyvlik/formula/blob/master/src/main/java/io/github/qyvlik/formula/modules/formula/service/impl/FormulaCalculatorImpl.java#L65 创建指定 "-strict", "--no-java", "--no-syntax-extensions" 参数,创建完毕后,移除不必要的有全局副作用的 js 函数。 此外可以考虑自己练手,使用 一些编译原理、逆波兰表达式等知识,自己实现四则计算器,还可以顺手防止恶意代码注入呢。 |
14
blackFool 2020 年 2 月 26 日
com.googlecode.aviator
|
15
chocotan 2020 年 2 月 26 日
|
16
xyooyx 2020 年 2 月 26 日
中序表达式转前序表达式
|
17
jorneyr 2020 年 2 月 26 日
也可以调用 Groovy 脚本
|
18
hhhsuan 2020 年 2 月 26 日
轮子太多了,一搜一大把,比如这个: https://mathparser.org/
|
19
xupefei 2020 年 2 月 26 日 via iPhone
|
20
mineqiqi 2020 年 2 月 26 日
好像轮子挺多的
|
21
hantsy 2020 年 2 月 26 日
@leishi1313 按照以前大学的数据结构课程,字符是不是应该用什么 FIFO 容器存放,一个个字符分析,加减乘除()有优先级不同。
|
22
HuHui 2020 年 2 月 26 日
Apache Commons JEXL
|
23
ic2y 2020 年 2 月 26 日
|
24
Comdex 2020 年 2 月 26 日 via iPhone
中缀表达式
|
25
bjrjk 2020 年 2 月 27 日 via Android
中缀表达式转后缀表达式再计算结果输出
|
26
leishi1313 2020 年 2 月 27 日 via Android
@xupefei 3 要会员😂
|