为了账号安全,请及时绑定邮箱和手机立即绑定

即使对象属于数组,也找不到数组

即使对象属于数组,也找不到数组

白猪掌柜的 2021-08-25 18:17:54
所以我试图将 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);


查看完整回答
反对 回复 2021-08-25
?
呼如林

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。


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信