如何将2个数组项相乘

时间:2016-08-12 11:10:41

标签: java arrays math

我正在制作一款Android应用程序,最终将用作游戏的骰子。我有一个键盘,将方程式输入字符串。然后我将String解析成一个数组,需要计算方程式。我正在使用for循环来遍历数组,但是我不确定如何在它出现时处理乘法。

举个例子:

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

所以我现在有一个数组,其中包含2,+,3,*,6。我怎么能把它变成20的答案呢?

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

2 个答案:

答案 0 :(得分: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)

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

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

链接上的Python代码就是这样的:

  

$ python calc1.py

     

计算值GT; 3 + 4

     

7

     

计算值GT; 3 + 5

     

8

     

计算值GT; 3 + 9

     

12

     

计算值GT;

还有另一个用Java here编写的示例。

Bu无论如何,你需要的是以某种方式计算String中给出的数学,所以@ Raman的答案非常适合解决你的问题。

相关问题