我正在制作一个计算器程序,可以读取这样的字符串:
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;
}
是否有更简单的方法来执行字符串中的函数?
答案 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
基本上,您可以将字符串解析为可以计算的表达式树。