【问题标题】:Convert String in Java to Integer [duplicate]将Java中的字符串转换为整数[重复]
【发布时间】:2015-03-26 05:54:08
【问题描述】:

有没有办法将Java中的“10+(8*9)”之类的字符串转换为整数(结果)? 我正在尝试通过将字符串解析为循环处理它们的字符并以某种方式尝试获得结果,但这确实很复杂,所以我只是想知道是否还有其他更简单的方法可以做到这一点。

【问题讨论】:

  • 没有简单的方法。你需要一个表达式解析器。一种可能的选择是使用内置的 JavaScript 引擎为您评估。
  • 使用内置的 JavaScript 引擎进行这种简单的数学计算
  • 解决这个问题的常用方法是将输入转换为逆波兰表示法
  • @MarkoTopolnik - 遇到运算符时使用堆栈和弹出操作数有什么问题?

标签: java string parsing math integer


【解决方案1】:

这里有一个Infix 符号

直接解释非常困难,一般先转换成RPN或者Postfix notation

Dijkstra 编写的 Shutting-yard 算法会为您完成转换。你应该得到一个可以表示为的结果:

10 8 9 * +

一旦你有了这个,你应用postfix algorithm来解决你拥有的堆栈。

【讨论】:

  • 谁投了反对票,请证明你的投票是正确的;这是一个很好的答案。
【解决方案2】:

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));
    } 
}

【讨论】:

  • 这是一个好方法吗?在java中使用Javascript?
  • 如果不指出您实际上调用的不仅仅是表达式解析器,我不建议您这样做。这能够执行任意 JavaScript,如果输入是用户数据,这非常相关。
  • 我已经添加了简单的检查器,如果它是一个算术表达式并且它工作得很好,谢谢。
猜你喜欢
  • 2011-07-01
  • 2010-11-21
  • 2011-03-31
  • 1970-01-01
  • 2013-10-06
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多