-1

af、ae 和 be 都是整数,在这里我检查它们是否等于 0。如果不等于,我想返回 null。如果它们确实为零,我想返回 glorpPoly。但由于某种原因,即使满足条件,它也总是返回 null ......有人知道为什么吗?所有这些值都是我们老师创建的一种类型,称为 MyDouble。所有这些都已初始化为此值,但它仍然不起作用。

MyDouble af = a.multiply(poly.c);
    MyDouble ae = a.multiply(poly.b);
    MyDouble bf = b.multiply(poly.c);
    MyDouble cf = c.multiply(poly.c);
    MyDouble be = b.multiply(poly.b);
    MyDouble ad = a.multiply(poly.a);
    MyDouble ce = c.multiply(poly.b);
    MyDouble bd = b.multiply(poly.c);
    MyDouble cd = c.multiply(poly.a);
    //Adding the the variables and creating new coefficients
    MyDouble newA = af;
    MyDouble newB = ae.add(bf);
    MyDouble newC = cf.add(be).add(ad);
    MyDouble newD = ce.add(bd);
    MyDouble newE = cd;
    MyDouble zero = new MyDouble(0)
if(af != zero && ae !=zero && be != zero){

        return null;
    }
    else{
        MartianPolynomial glorpPoly = new MartianPolynomial(newC,newD,newE);
        return glorpPoly;
    }
}
4

4 回答 4

3

无法使用==或比较对象!=。您必须使用以下equals()方法:

if (!af.equals(zero) && !ae.equals(zero) && !be.equals(zero) {
  ...
}

运算符!=和 ( ==) 检查对象身份,即两个引用是否指向同一个实例。他们不比较实例的“价值”。

于 2013-11-02T20:10:44.517 回答
0

LE: 如果 'af'、'ae' 和 'be' 是数字(类型 int、double、float),您可以使用:

if(af != 0 && ae !=0 && be != 0)

但如果它们是对象,您可以将它们的属性与 0 进行比较,也可以将它们与相同类型的对象进行比较。参见:http: //msdn.microsoft.com/en-us/library/bsc2ak47.aspx

于 2013-11-02T20:07:03.390 回答
0

怎么样

if(! af.equals(zero) && ! ae.equals(zero) && ! be.equals(zero) ) ...
于 2013-11-02T20:11:16.003 回答
0

如果您正在检查它们是否都为零,只需将它们全部相乘,如果结果为零,那么您知道...

我假设,由于您没有提供您的MyDouble课程,您有一种检索value?

if ((af.value() * ae.value() * be.value()) != 0)

OP,请为我们提供您的MyDouble.java课程。

于 2013-11-02T20:11:16.693 回答