2013-10-10 25 views
0

我试图通过谷歌和这里搜索它,但我没有找到问题,我的意思(搜索引擎不明白我的意思是功能的上下文)。如何为任何泛型f创建一个数学函数f(x)?

基本上我想要做以下

double f(String function, double a){ 
    return function.Function(a); 
} 

会出现什么情况是字符串函数的形式为“X^2 + 2”,它可能会以某种方式转换为“x.pow(2) + 2“,然后将x替换为a并返回该函数的结果。

是否有任何Java类或方法做我说的(或简单的方法来做到这一点)?或者来自其他来源的任何代码,这些代码可以完成我所说的或变体。

我不必编码我所说的,我只需要f(x)来解决作为输入传递的任何函数字符串的根发现问题。我以为Java会有这样的方法,但我找不到它。

+2

你需要编写数学表达式解析器 – erjoalgo

+3

这不是Java的核心的一部分。你需要一个库来解析你的字符串并对它进行评估。搜索“解析器”或“方程评估器”等术语。 –

+0

看看这个[library project](http://sourceforge.net/projects/jep/) –

回答

1

所以,在Java中你有一个基本问题,因为你不能直接将字符串转换为数学表达式。您的选项如下:

  • 搜索可将特别格式化的字符串转换为数学表达式的库。
  • 自己解析字符串。字符串解析很困难且容易出错,而围绕它的Java将会很困难。
  • 使用Scala,它可以让你直接编写函数传入你的函数,而不是试图从人类可读的字符串到机器可解释的函数进行昂贵的转换。请注意,Scala可与Java互操作,但有一点学习曲线。其他功能语言也可以处理这一点,但可能缺乏互操作性。
相关问题