【发布时间】:2021-10-12 11:14:18
【问题描述】:
这是我的复数类中的一段代码:
public class complex {
private double re;
private double im;
public complex(double real, double imag) {
re = real;
im = imag;
}
public Boolean equals(complex b) {
complex a = this;
return a.re==b.re && a.im==b.im;
}
public Boolean equals(double alpha){
complex a = this;
return a.re==alpha && a.im==0;
}
...
}
这就是我尝试使用它的目的:
public class cubic_cardano {
public static void solveCubic(complex a, complex b, complex c, complex d){
if (a==b && b==c && c==d && d==0) {
...
}
}
...
}
将复数与复数进行比较可以正常工作,而将复数与双精度数进行比较会出错:
Incompatible operand types complex and int
可能是什么原因,我怎样才能使它起作用?
【问题讨论】:
-
您需要使用
.equals(…)与您的equals函数进行比较。另请注意,被覆盖的.equals的方法签名应该不同。这是一个带有Object参数和原始boolean返回的方法。 -
您的 equals 方法毫无意义。你需要重写equals方法,而不是重载它
-
比较对象时你不能使用 == 你需要使用 .equals 所以 a.equals(b) 等等但是需要注意你调用 equals 的实例不是空。
-
您好,如果您使用的是最新版本的 Java,您是否考虑过简单地使用
record Complex(double re, double im) {}?