Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java中的字符串转换为整数_Java_String_Parsing_Math_Integer - Fatal编程技术网

将Java中的字符串转换为整数

将Java中的字符串转换为整数,java,string,parsing,math,integer,Java,String,Parsing,Math,Integer,有没有办法将Java中类似“10+(8*9)”的字符串转换为整数(result)? 我试图通过将字符串解析为循环的字符来实现这一点,并试图以某种方式获得结果,但这真的很复杂,所以我只是想知道是否还有其他更简单的方法来实现这一点。Java有内置的javascript引擎-它可以为您计算算术表达式: import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; public class Test { pub

有没有办法将Java中类似“10+(8*9)”的字符串转换为整数(result)?
我试图通过将字符串解析为循环的字符来实现这一点,并试图以某种方式获得结果,但这真的很复杂,所以我只是想知道是否还有其他更简单的方法来实现这一点。

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));
    } 
}
这里有一个符号

它很难直接解释,通常转换为RPN或first

Dijkstra编写的调车场算法为您进行转换。您应该获得一个可以表示为以下内容的结果:

10 8 9 * +

一旦你有了这个,你就可以应用这个函数来求解你的堆栈。

没有简单的方法。您需要一个表达式解析器。一个可能的选择是使用内置JavaScript引擎为您计算。使用内置JavaScript引擎进行简单的数学计算解决此问题的常用方法是将输入转换为反向波兰语notation@MarkoTopolnik-当运算符为空时,使用堆栈和弹出操作数有什么问题遇到?这是一个好方法吗?在java中使用Javascript?如果不指出您实际上调用的不仅仅是表达式解析器,我就不推荐这样做。这可以执行任意JavaScript,如果输入是用户数据,这是非常相关的。我添加了简单的检查程序,如果它是一个算术表达式,它工作得很好,谢谢。谁否决了这一点,请证明你的投票;这是一个很好的答案。