0

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

结果是错误消息。

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

4

3 回答 3

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
}
于 2012-08-04T17:54:52.977 回答
0

看起来已经回答了一个类似的问题:Java 中有 eval() 函数吗?

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

于 2012-08-04T17:56:14.200 回答
0

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

于 2012-08-04T17:56:15.307 回答