JAVA计算数字表达式的值:
- 利用JS来计算:
try {
String s = "900000/(-(-200000-1000000-1000000))" ;//2200000
ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript" );
System. out.println(jse.eval(s).toString());
} catch (ScriptException e) {
throw new IllegalArgumentException("计算错误",e);
}
- 利用栈来计算 参考 栈计算表达式:
- 将所有的数字放入List中(优先级别最高的放在最后),然后将运算符放入栈中(便于剔除左右括号),运算符级别最高的放在首位(最后直接拼接进List,优先级高的先运算)。将栈剔除左右括号,拼接进List。
- 在计算时,将数值全部放进一个新栈,遍历剩下的list(全是运算符),此时每次计算完都要把计算结果push()放进栈尾。便于pop()直接取出来。