首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的数学表达式“泛型”

Java中的数学表达式“泛型”
EN

Stack Overflow用户
提问于 2013-04-10 06:16:14
回答 1查看 270关注 0票数 0

嗯,我在字符串中有一个数学表达式

代码语言:javascript
复制
String myExpression = "2-3*(cos(x)+sen(x)-exp(-x))*(sen(2x)+1/(cos(x)))";

我想知道如何获得表达式(在字符串中):

代码语言:javascript
复制
2-3*cos(x)*sen(2x)-3*cos(x)/cos(x)-3*sen(x)*sen(2x)-3*sen(x)/cos(x)+3*exp(-x)*sen(2x)+3*exp(-x)/cos(x)

即,应用分布属性,但不计算值。

有谁可以帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 08:41:59

如果你想把一个数学表达式转换成另一种形式,我建议先把它转换成一个 (< link也告诉你如何转换回‘中缀’),然后试着玩弄它(你可以把你的函数(例如.sin(x))作为常量)。希望你可以自己去做,有很多资源可以找到参考资料。

Link to a simple Infix/Postfix Calculator,所以如果你以前没有尝试过,你可以试一试。

接下来,您将转换回infix,但这一次将分配乘法和除法

例如:

代码语言:javascript
复制
   *
  / \
 A   +
    / \
   B   /
      / \
     C   D

Infix: A*(B+C/D)
Postfix: ABCD/+*

ABCD/+*
C and D division first (distribute)                >>> C/D
B and C/D addition(addition,nothing to distribute) >>> B+C/D
A and B + C/D multiplication (distribute)          >>> A*B+A*C/D

因此,一般来说,您除了连接加法和减法字符串之外什么也不做。

但是:

除以'-'

  • When如果您使用'-'.

乘法,则在每个"A*"'+'之后添加一个B字符串,然后在每个"/B"'+'之前添加一个'+'字符串

我相信这应该涵盖所有简单的表达式。当表达式广泛地分支时,您可能(也可能不)需要更多的情况,因为它还没有完全考虑清楚。我很感谢大家的反馈。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15913563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档