给定一个多项式,我正在尝试编写代码来创建一个按次数计算的多项式,并将类似的项添加在一起例如...给定
String term = "323x^3+2x+x-5x+5x^2" //Given
What I'd like = "323x^3+5x^2-2x" //result
到目前为止,我已经将给定的多项式标记化了...
term = term.replace("+" , "~+");
term = term.replace("-", "~-");
System.out.println(term);
StringTokenizer multiTokenizer = new StringTokenizer(term, "~");
int numberofTokens = multiTokenizer.countTokens();
String[] tokensArray = new String[numberofTokens];
int x=0;
while (multiTokenizer.hasMoreTokens())
{
System.out.println(multiTokenizer.nextToken());
}
结果
323x^3~+2x~+x~-5x~+5x^2
323x^3
+2x
+x
-5x
+5x^2
我将如何从 x 值中分离系数,将每个系数保存在一个数组中,然后将度数放入与系数具有相同索引的不同数组中?然后我将使用这个算法来添加相似的术语......
for (i=0;i<=biggest_Root; i++)
for(j=0; j<=items_in_list ; j++)
if (degree_array[j] = i)
total += b1[j];
array_of_totals[i] = total;
非常感谢任何和所有帮助!
最佳答案
您还可以更新这些项,使它们都具有系数:
s/([+-])x/\11/g
所以 +x^2 变成 +1x^2。
您的各个系数可以通过简单的正则表达式来提取。 像这样的东西应该足够了:
/([+-]?\d+)x/ // match for x
/([+-]?\d+)x\^2/ // match for x^2
/([+-]?\d+)x\^3/ // match for x^3
/([+-]?\d+)x\^4/ // match for x^4
然后
sum_of_coefficient[degree] += match
其中“match”是正则表达式匹配的parseInt(特殊情况,系数为1并且没有数字,例如+x)
sum_of_coefficient[3] = 323
sum_of_coefficient[1] = +2+1-5 = -2
sum_of_coefficient[2] = 5
关于Java:字符串标记器到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32960206/