Java计算字符串中的数字

时间:2013-11-26 02:11:19

标签: java string

我正在制作一个计算器程序,可以读取这样的字符串:

67+12-45

如何执行字符串打算执行的功能?这是我到目前为止所尝试的内容:

public static int calculate(String expression, int num1, int num2)
{
    int answer = 0;
    switch(expression)
    {
        case "+":
            if(answer != 0)
            {
                answer = answer + num1 + num2;
            }
            else
            {
                answer = num1 + num2;
            }
            break;
        case "-":
            if(answer != 0)
            {
                answer = answer + (num1 - num2);
            }
            else
            {
                answer = num1 - num2;
            }
            break;
        case "*":
            if(answer != 0)
            {
                answer = answer + (num1 * num2);
            }
            else
            {
                answer = num1 * num2;
            }
            break;
        case "/":
            if(answer != 0)
            {
                answer = answer + (num1 / num2);
            }
            else
            {
                answer = num1 / num2;
            }
            break;
        case "%":
            if(answer != 0)
            {
                answer = answer + (num1 % num2);
            }
            else
            {
                answer = num1 % num2;
            }
            break;
    }
    return answer;
}

是否有更简单的方法来执行字符串中的函数?

2 个答案:

答案 0 :(得分:3)

最简单的方法是使用eval,你可以这样做:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");        
Object result = engine.eval("67+12-45"); //you can insert any expression here

答案 1 :(得分:0)

本演讲描述了针对此问题的面向对象的解决方案: http://youtu.be/4F72VULWFvc?t=7m40s

基本上,您可以将字符串解析为可以计算的表达式树。