将 Java 中的字符串转换为整数
Convert String in Java to Integer
有什么方法可以将Java中的“10+(8*9)”之类的字符串转换为整数(结果)?
我正在尝试通过将字符串解析为循环播放的字符并以某种方式尝试获得结果来做到这一点,但这真的很复杂,所以我只是想知道是否还有其他更简单的方法来做到这一点。
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));
}
}
你这里有一个 Infix 符号
直接解释非常困难,一般先转换为RPN或者Postfix notation。
Dijkstra 编写的 Shunting-yard 算法为您完成转换。您应该获得可以表示为的结果:
10 8 9 * +
一旦你有了这个,你就可以应用postfix algorithm来解决你所拥有的堆栈。
有什么方法可以将Java中的“10+(8*9)”之类的字符串转换为整数(结果)? 我正在尝试通过将字符串解析为循环播放的字符并以某种方式尝试获得结果来做到这一点,但这真的很复杂,所以我只是想知道是否还有其他更简单的方法来做到这一点。
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));
}
}
你这里有一个 Infix 符号
直接解释非常困难,一般先转换为RPN或者Postfix notation。
Dijkstra 编写的 Shunting-yard 算法为您完成转换。您应该获得可以表示为的结果:
10 8 9 * +
一旦你有了这个,你就可以应用postfix algorithm来解决你所拥有的堆栈。