有没有办法将Java中的“10+(8 * 9)”之类的字符串转换为整数(结果)? 我试图通过将字符串解析为循环来处理它们并以某种方式尝试获得结果来实现它,但它确实很复杂,所以我只是想知道是否还有其他更简单的方法来执行此操作。
答案 0 :(得分:2)
这里有Infix符号
直接解释非常困难,通常首先转换为RPN或Postfix notation。
Dijkstra编写的Shunting-yard算法为您进行转换。您应该获得可以表示为的结果:
10 8 9 * +
完成此操作后,您应用postfix algorithm来解决您拥有的堆栈。
答案 1 :(得分:0)
Java有内置的javascript引擎 - 它可以为你评估算术表达式:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class Test {
public static void main(String[] args) throws Exception{
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String expression= "10+(8*9)";
System.out.println(engine.eval(expression));
}
}