如何使用Integer.parseInt(str)返回值计算int表达式

时间:2012-08-04 17:50:15

标签: java string int

Java代码......

如果我有

int num = 10 + 5;
System.out.println(num);

结果是15

如果我有

String str = "10";
int number = Integer.parseInt(str);
System.out.println(number);

结果是10

但如果我有

String str = "10 + 5"; //here the problem.
int number = Integer.parseInt(str);
System.out.println(number);

结果是错误消息。

如何正确地做到这一点。我想要实现的是从String中获取表达式并进行计算。我被迫从String中获取它,因为我从JTextfield获取它,所以我想对返回的String表达式进行计算。

3 个答案:

答案 0 :(得分:2)

没有简单的方法直接这样做,因为你需要某种“表达式评估器”。一种方法是使用脚本库中的javascript引擎:

public static void main(String[] args) throws Exception {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");

    String s = "10 + 5";
    int  result = ((Double) engine.eval(s)).intValue();
    System.out.println(result); // 15
}

答案 1 :(得分:0)

看起来类似的问题已经回答:Is there an eval() function in Java?

然而,您可以通过将字符串拆分为数组并编写算法来处理操作来编写一个非常简单的解析器。

答案 2 :(得分:0)

您必须编写表达式解析器来分离操作数和运算符,然后相应地执行操作。您无法将10 + 5传递给Integer.parseInt()并期望评估结果。