【问题标题】:How to extract polynomial coefficients in Java?如何在Java中提取多项式系数?
【发布时间】:2012-11-05 02:50:30
【问题描述】:

以字符串-2x^2+3x^1+6为例,如何从字符串中存储的这个方程中提取-2、3和6?

【问题讨论】:

  • 我尝试使用 + 作为分隔符来提取 -2x2 3x 和 6 ..然后该怎么办
  • 用分隔符 'x' 通过提取运行 "-2x^2" 怎么样? (顺便说一句。你有计划如何处理例如 3x^3-2x^2-3 ?

标签: java string text-parsing polynomial-math


【解决方案1】:

没有给出确切答案,但有一些提示:

  • 使用replacemeyhod:

    将所有- 替换为+-。

  • 使用split方法:

    // after replace effect
    String str = "+-2x^2+3x^1+6"
    String[] arr = str.split("+");
    // arr will contain: {-2x^2, 3x^1, 6}
    
  • 现在,每个索引值都可以单独拆分:

    String str2 = arr[0];
    // str2 = -2x^2;
    // split with x and get vale at index 0
    

【讨论】:

    【解决方案2】:
        String polynomial= "-2x^2+3x^1+6";
        String[] parts = polynomial.split("x\\^\\d+\\+?");
        for (String part : parts) {
            System.out.println(part);
        }
    

    这应该可行。样本输出

    polynomial= "-2x^2+3x^1+6"
    Output:
    -2
    3
    6 
    polynomial = "-30x^6+20x^3+3"
    Output:
    -30
    20
    3
    

    【讨论】:

    • 谢谢 Manoj,但如果 - 符号出现例如“-2x^2-3x^1+6”,这在这种情况下将不起作用
    • @Manish 做了一个小改动。它现在应该适用于这种情况。我已将 + 号匹配设为可选。这样也可以匹配负数。
    • 我想知道如果序列输入为 6+3x^1-2x^2 会怎样......在这种情况下匹配模式会改变......
    • @Manish ya..then 模式会改变..如果是这种情况,我认为更好的方法是首先根据 +/- 符号拆分,然后从拆分后进一步提取数字部分
    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2022-11-26
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多