2016-08-12 85 views
0

我正在制作一个Android应用程序,最终将用作游戏的骰子滚轮。我有一个键盘可以将等式输入到字符串中。然后我将字符串解析成一个数组并需要计算方程。我正在使用for循环来查看数组,但我不确定如何处理乘法运算。如何繁殖2个阵列项目

作为一个例子:

String theEquation = "2 + 3 * 6"; 
String[] result = theEquation.split("\\s+"); 

所以我现在有具有2的阵列,+,3,*,6在其中。我会如何着手回答20的答案?

我最初使用for循环来将整个数组加在一起。当它只是加法时,它工作正常。但是当我添加乘法时,事情变得很狡猾。

+0

您需要一个公式分析器。 –

+0

这是一个广泛的话题。你需要指定你想要支持哪种类型的操作,允许哪些输入值等等。出于好奇:你为什么需要骰子游戏这样的事情? –

+0

检查此:http://stackoverflow.com/questions/1432245/how-to-parse-a-mathematical-expression-given-as-a-string-and-return-a-number – beeb

回答

2

您可以使用javax.script.ScriptEngine

输出

20 

看到这个代码:

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 

public class EvaluateExpr { 
    public static void main(String[] args) throws Exception{ 
    ScriptEngineManager se = new ScriptEngineManager(); 
    ScriptEngine scriptengine = se.getEngineByName("JavaScript"); 
    String theEquation = "2 + 3 * 6"; 
    System.out.println(scriptengine.eval(theEquation)); 
    } 
} 
+1

只是公然给脚本引擎提供代码只是要求代码注入攻击。 –

+0

我不认为这(StackOverflow)是正确的地方做验证。这应该是一个不同的问题。我只是提供逻辑。 –

+0

只是指出常见的陷阱/危害 –

0

你要求执行某种解释器的基本解释简单的数学符号和给出真实的结果。

如果你真的想自己开发一个基本级别的解释器,你可以找到一个用Python编写的非常好的示例,在here(不要担心,python非常容易阅读和理解)。

在链路

的Python代码简单地是这样的:

$蟒calc1.py

计算值> 3 + 4

计算值> 3+ 5

计算值> 3 + 9

计算值>

还有用Java编写的here另一个样品。

无论如何,你需要的是以某种方式计算在字符串中给出的数学,所以@拉曼的答案是非常好的解决你的问题。