【问题标题】:Getting polynomial exponents in java在java中获取多项式指数
【发布时间】:2014-03-10 23:40:57
【问题描述】:

我正在尝试在 java 中获取多项式的指数。

我在这里找到了类似的东西 How to extract polynomial coefficients in java? 但我似乎无法根据需要修改 .split() 方法的参数。

我试过了:

public static void main(String[] args) { 


Scanner scanner = new Scanner(System.in);
String s1 = new String();
System.out.println("Enter a polynome:");
s1 = scanner.nextLine();
    scanner.close();

String[] Exponents = s1.split("\\-?\\+?\\dx\\^");
for (String exponent : Exponents) {
    System.out.println("Exponents:");
    System.out.println(exponent);
    }

对于输入:-2x^2+3x^1+6 输出是:

指数:

指数: 2

指数: 1+6

感谢您的帮助,

【问题讨论】:

  • 你能显示你想提取其系数的多项式吗?示例通常会有所帮助。显示您所做的任何尝试也是如此。
  • .split 是一个生硬的工具,可能不足以用于此用途。试试正则表达式。
  • 或手写逻辑扫描字符串搜索 ^ 并提取紧随其后的数字。或者,针对您当前的问题,实现一个递归下降表达式解析器,它能够处理诸如 x^(y+2) 之类的事情......

标签: java exponent


【解决方案1】:

您可能想要拆分 + 和 - 以获取各个术语。然后对于每个术语,再次使用 split 来返回 ^ 之后的任何内容,如果没有 ^,则返回 0。

String[] terms = expression.split("(-|\\+)");
for (String term : terms) {
    String[] parts = term.split("\\^");
    System.out.println("Exponent: " + (parts.length > 1 ? parts[1] : "0"));
}

【讨论】:

  • 我从没想过它是两级拆分。感谢您的帮助!
  • 如果第一个单体没有符号,则使用“(-|\\+)”,否则使用“(\\+-?)”。
  • @Floris 为什么我需要调整?以我的方式使用split 不需要第一个系数有符号。
猜你喜欢
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多