所以我试图将 2 个多项式加在一起,并且我创建了对象类型 Polynomial of ArrayBasedPoly,该对象是arraycoeff 的一个,并且度数从 0 开始。前任: [1, 0, 3, 4] is 4x^3 + 3x^2 + 1在我的添加类中,我试图将 2 个数组添加在一起 ->前任: p1 = [1, 0, 3, 4], p2 = [-2, -5], Sum[] = [-1, -5, 3, 4]但是,在 add 方法中,即使对象是数组,它也不会将 p2 识别为数组。编辑:现在我知道我需要一个方法来找到对象 p 数组的长度,但是,即使我有一个单独的方法,它仍然找不到它?public class ArrayBasedPoly extends Polynomial{ private double [] poly; public ArrayBasedPoly(double [] poly) { this.poly = poly; } public ArrayBasedPoly(double coeff, int expon) { super.coeff = coeff; super.expon = expon; } public ArrayBasedPoly add(ArrayBasedPoly p) { double [] temp = new double [Math.max(p.length, poly.length)]; //<=== Here return null; //temp } public String toString() { String s = ""; if (poly == null) { return super.toString(); // no poly array } for(int i = poly.length - 1; i >= 0; i--) { if (i != poly.length - 1 && poly[i] > 0) //adds + sign { s += " + "; } if (poly[i] != 0) // ignores the 0 in the array { if (i == 1) //if expon is 1, doesn't do the ^1 { s += poly[i] + "x"; } else if (i > 0) { // normal s += poly[i] + "x^" + i; } else { s += poly[i]; // if expon = 0, just prints out the coeff } } } return s; } public static void main (String [] args) { double [] c = {1, 0, 3, 4}; double [] c1 = {-2, -5}; Polynomial p1 = new ArrayBasedPoly (c); System.out.println("p1(x) = " + p1); Polynomial p2 = new ArrayBasedPoly (c1); System.out.println("p2(x) = " + p2); Polynomial p3 = new ArrayBasedPoly(-4, 1); System.out.println("p3(x) = " + p3); Polynomial p = p1.add(p2);//.add(p2); System.out.println("p(x) = " + p);
2 回答
GCT1015
TA贡献1827条经验 获得超4个赞
似乎我犯了一个错误,“add”方法应该有参数“Polynomial”,因为在main方法中,对象是Polynomial类型。但是,当我使用 Polynomial 参数并具有 getLength() 方法时,它仍然找不到它。– 阿格拉蒙
问题出在方法调用中:
Polynomial p = p1.add(p2);//.add(p2);
因为 p1 是一个多项式,它会检查那个类的 add 方法。你需要投p1。然后您将需要转换 p2,因为该方法需要一个 ArrayBasedPoly。
Polynomial p = ((ArrayBasedPoly) p1).add((ArrayBasedPoly) p2);
呼如林
TA贡献1798条经验 获得超3个赞
您在这段代码中有多个问题。
首先,ArrayBasedPoly 不应该扩展 Polynomial,因为它不是它的子类,而是它的数组表示。为了解决这个问题,你应该在 ArrayBasedPoly 中保留一个 Polynomial 数组/列表,如下所示:
public class ArrayBasedPoly {
Polynomial[] polyArray;
// or alternatively: List<Polynomial> polyArray;
// or even better, use a sorted structure such as skiplist
}
其次,正如 Pereira 指出的那样,您将这两个类混为一谈。Polynomial 类不包含 add()。您只能添加两个 ArrayBasePoly。
添加回答
举报
0/150
提交
取消