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;
}
}
答案 0 :(得分:3)
无法使用==
或!=
来比较对象。您必须使用equals()
方法:
if (!af.equals(zero) && !ae.equals(zero) && !be.equals(zero) {
...
}
运算符!=
和(==
)检查对象标识,即两个引用是否指向同一实例。他们没有比较实例的“价值”。
答案 1 :(得分: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
答案 2 :(得分:0)
怎么样
if(! af.equals(zero) && ! ae.equals(zero) && ! be.equals(zero) ) ...
答案 3 :(得分:0)
如果您正在检查它们是否全部为零,只需将它们全部相乘,如果结果为零,那么您知道......
我假设,由于您未提供MyDouble
课程,因此您有一种检索value
的方法?
if ((af.value() * ae.value() * be.value()) != 0)
OP ,请向我们提供您的MyDouble.java
课程。