我正在尝试从多项式字符串中提取系数和指数,然后将它们存储到数组中,以便可以使用这些数组创建一个可以对其进行数学运算(例如加,减和乘)的新项。 )
List<Term> poly = new ArrayList<>;
String poly = "26x^7+5x^6-8x^3-2";
int[] coeff = // Something like using split method here to get coeffs
int[] expo = // Same here but with exponents
for(int i = 0; i < coeffs.length; i++){
poly.add(new Term(coeff[i], expo[i]);
}
问题是,我真的不知道该怎么做。我已经尝试了很多方法,但都导致了错误。
答案 0 :(得分:1)
这是一种解决方案,它忽略了x ^ 1和x ^ 0且系数= 1的额外复杂性。
它按照here
在正则表达式中使用Lookaheadimport java.util.ArrayList;
import java.util.List;
public class MyClass {
public static void main(String[] args) {
// expect format ax^n for each term. in particular in the cases a=1, x=1 and x=0.
String poly = "26x^7+5x^6-8x^3+1x^1-2x^0";
// remove ^ and then split by x and by + and - keeping the sign
String[] numbers = poly.replace("^", "").split("((?=\\+)|(?=\\-)|x)");
List<Integer> coeff = new ArrayList<>();
List<Integer> expo = new ArrayList<>();
// we can now assume that for every coefficient there is an exponent
for (int i = 0; i < numbers.length; i += 2) {
coeff.add(Integer.parseInt(numbers[i]));
expo.add(Integer.parseInt(numbers[i + 1]));
}
System.out.println(coeff);
System.out.println(expo);
}
}
输出:
[26, 5, -8, 1, -2]
[7, 6, 3, 1, 0]
答案 1 :(得分:0)
我会尝试使用“ +”或“-”字符分割多边形。如果Java中有一个regex split方法,那将是合适的。
此拆分产生的数组是您在循环中要迭代的内容,以便填充多边形列表。
要注意的另一件事是多项式中的“ -2”项,从技术上讲,它是x ^ 0,而任何“ ax”项则是x ^ 1。