如何在J2ME中从字符串中计算数学表达式

时间:2010-11-22 06:03:36

标签: java-me mathematical-expressions

如何从J2ME中的字符串计算数学表达式。

例如一个包含“2 * 4”的字符串。从我想要的字符串中计算数学表达式并得到结果为8(2 * 4)。我应该如何在J2ME中完成此操作。

在“Java™Platform Standard Ed.6”中有一个包,即“javax.script”用于从string中评估数学表达式。就像任何包或任何类都可用于J2ME来评估数学表达式字符串。

2 个答案:

答案 0 :(得分:2)

如果需要处理嵌套表达式,只需编写自己的基于堆栈的解析器。

如果您不熟悉算法,则使用两个堆栈,一个用于保存运算符,另一个用于保存操作数。

对于基本情况,您将所有运算符和操作数解析为它们各自的堆栈,然后通过弹出两个操作数和一个运算符来计算,执行计算然后将结果存储回操作数堆栈。继续,直到操作符堆栈为空,操作数堆栈只有一个值(结果)。如果你的运算符用完了,你的堆栈上有多个结果,那么表达式就会出错。

要处理括号(包括嵌套括号),请包含左右parens的运算符。解析表达式时,如果遇到正确的paren,请立即开始计算表达式(弹出两个操作数和一个运算符,将结果放回操作数堆栈),直到遇到左边的paren。然后继续解析表达式。

答案 1 :(得分:1)

以下是用于评估J2ME中字符串的数学表达式的步骤

  1. 在字符串变量中读取表达式。这里的表达式是中缀形式。
  2. 将字符串变量中的表达式转换为后缀形式,并将其存储在另一个字符串变量“postfix_str”中。
  3. 使用堆栈评估后缀形式中的表达式(“postfix_str”数据中的值)。