我想处理这个多项式
String str =“2 * x ^ 2 + x + 2 * x ^ 2 + 8 - x ^ 3”;
我用加号和减号运算符拆分了字符串并获得了2 * x ^ 2。我发现很难解决这个问题。
我知道首先我需要计算x的值,让我们说x = 2,只是不知道如何将字符串解析为整数,因为还要解析字符串的其他部分。
我是否也需要分解“2 * x ^ 2”?
如何在字符串中找到*。我知道我可以使用str.contains(“*”), 对于这个特殊操作,我知道在2 * x ^ 2之后会出现什么,但是如果用户输入了那个棘手的多项式。
输出是迄今为止
操作2 * x ^ 2 + x + 2 * x ^ 2 + 8 - x ^ 3
Plus Splits
0 2 * x ^ 2
1 x
2 2 * x ^ 2
3 8 - x ^ 3
减去分数
0 2 * x ^ 2 + x + 2 * x ^ 2 + 8
1 x ^ 3
答案 0 :(得分:2)
尝试使用此功能:http://projects.congrace.de/exp4j/
Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
.variables("x", "y")
.build()
.setVariable("x", 2.3)
.setVariable("y", 3.14);
double result = e.evaluate();
答案 1 :(得分:0)
一般来说,此操作称为“解析表达式”,并涵盖在许多书籍,文章和问题中,如How to parse a mathematical expression given as a string and return a number?。
在这种特殊情况下,看起来格式非常有限,您可以手动拆分字符串并构建相应的数据结构:
*
分割。^
分割。如果您无法使用正则表达式来分割字符串 - 请使用indexOf查找特定字符(例如问题中的*
- s.indexOf('*')
)并使用substring切掉部分字符串。
作为为该表达式构建AST的一部分,您还需要How to convert a String to an int in Java?。