Java:字符串标记器到数组

标签 java arrays int polynomial-math stringtokenizer

给定一个多项式,我正在尝试编写代码来创建一个按次数计算的多项式,并将类似的项添加在一起例如...给定

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/

相关文章:

JAVA - 错误不兼容类型 : String cannot be converted to String[ ]

java - Android如何将纬度经度转换成度数格式

java - DAO 类是否应该依赖于其他 dao 类?

java - 将 TextField 动态添加到 javafx 场景

java - 使用 JMSTemplate 查找 JMS 队列大小

arrays - Ruby:从文件中读取整数并将它们放入数组中

java - 给定一个字符串,删除除连字符之外的所有特殊字符并计算单词数

python - numpy中的随机单热矩阵

java - 如何在超过限制时打印 Java int 值

java - 如何将 Double 中的秒数转换为两个 int 秒数和毫秒数?