-1

我需要帮助编写加法和减法的静态版本。我试过这样做,但我不确定这是否是正确的方法,而且我的 equals 方法也不起作用。当我编译我的 equals 方法时,它总是打印错误。

public static void main(String[] args) {
    Complex c1 = new Complex(7, 7);
    Complex c2 = new Complex(7, 7);

    System.out.println(Complex.add(c1, c2));
    System.out.println(c1.equals(c2));

}

}

class Complex {

private static double realPart;
private static double imaginaryPart;

public Complex() {
    realPart = 0;
    imaginaryPart = 0;

}

public Complex(double c1, double c2) {
    realPart = c1;
    imaginaryPart = c2;

}

public static Complex add(Complex firstNumber, Complex secondNumber) {

    Complex result = new Complex();
    firstNumber.realPart = 7;
    secondNumber.imaginaryPart = 7;
    result.realPart = firstNumber.realPart + secondNumber.imaginaryPart;

    return result;

}

public static Complex subtract(Complex firstNumber, Complex secondNumber) {
    Complex result = new Complex();
    firstNumber.realPart = 7;
    secondNumber.imaginaryPart = 7;
    result.realPart = firstNumber.realPart + secondNumber.imaginaryPart;
    return result;
}

public boolean equals(Complex firstNumber, Complex secondNumber) {

    if (firstNumber == secondNumber) {
        return true;
    } else {
        return false;
    }

}

public String toString() {

    return "result= " + realPart;
}
}
4

2 回答 2

1

对象总是使用equals()方法进行比较。

==不是比较对象的方法!!!

(这已在堆栈溢出论坛上发布了数百次或更多次)

此外,添加一个@Override注释更清晰,以便您覆盖 equals 方法......

将您的代码改进为:-

@Override
public boolean equals(Complex firstNumber, Complex secondNumber) {
if (firstNumber.equals(secondNumber)) {
    return true;
} else {
    return false;
}

}
于 2014-11-11T03:33:06.077 回答
1

比较对象不起作用。您需要比较对象中的成员变量。我相信,如果您比较对象,那么您所比较的只是对象的存储位置。

接下来是......我不认为 realPart 值和 imaginaryPart 值应该是静态的。如果您希望每个复杂对象具有唯一的 realPart 和 imaginaryPart 值,它应该只是一个成员变量。

于 2014-11-11T02:46:47.947 回答