2

我试图完成我的junit测试以找到多项式方法的导数并且我在使其工作时遇到了一些麻烦。这是方法:

    public Polynomial derivative() {
  MyDouble a = new MyDouble(0);
  MyDouble b = this.a.add(this.a);
  MyDouble c = this.b;
  Polynomial poly = new Polynomial (a, b, c);
  return poly;
 } 

这是junit测试:

    public void testDerivative() {
  MyDouble a = new MyDouble(2), b = new MyDouble(4), c = new MyDouble(8);
  MyDouble d = new MyDouble(0), e = new MyDouble(4), f = new MyDouble(4);

  Polynomial p1 = new Polynomial(a, b, c);
  Polynomial p2 = new Polynomial(d,e,f);
  assertTrue(p1.derivative().equals(p2));
 }

我不太清楚为什么它不工作......我一遍又一遍地检查它,我知道我错过了一些东西。感谢大家提供的任何帮助,不胜感激

4

3 回答 3

3

前两个答案暗示的是,如果多项式类没有实现 equals(),那么您在测试中使用了 Object.equals()。当您想要验证 p1.derivative() 和 p2 具有相同的值时,Object.equals() 正在检查 p1.derivative() 和 p2 是否是同一个对象(它们显然不是)......

通常的解决方案是实现 Polynomial.equals(Polynomial rhs),这将确保每边的三个 MyDoubles 是 equals()。当然,您还必须确保 MyDoubles.equals(MyDouble rhs) 做正确的事情。

于 2010-03-30T20:51:54.107 回答
0

equals方法是否正确实施?

于 2010-03-30T20:45:25.090 回答
0

你的Polynomial班级实施了equals吗?

否则,它将进行对象级别的比较。这意味着两个对象的指针必须匹配才能相等。您必须实施equals以显示Polynomial(a, b, c)==的值Polynomial(d, e, f)

我不知道多项式的数据结构是什么,但你会这样做:

public boolean equals(Polynomial p) 
{
    // where a b and c are private MyDouble variables 
    if (p.a == this.a && p.b == this.b && p.c == this.c) 
        return true;
    else 
        return false;
}
于 2010-03-30T20:46:26.893 回答