-1

加算メソッドと減算メソッドの静的バージョンを作成するのに助けが必要です。私はそうしようとしましたが、これが正しい方法であるかどうか、またequalsメソッドが機能していないかどうかはよくわかりません。equals メソッドをコンパイルすると、常に false が出力されます。

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

オブジェクトの比較が機能しません。オブジェクト内のメンバー変数を比較する必要があります。オブジェクトを比較する場合、比較しているのはオブジェクトが格納されている場所だけだと思います。

次は... realPart 値と imaginaryPart 値が静的であってはならないと思います。各複合オブジェクトに固有の realPart 値と imaginaryPart 値を持たせたい場合は、メンバー変数にする必要があります。

于 2014-11-11T02:46:47.947 に答える
1

オブジェクトは常にequals()メソッドを使用して比較されます。

==オブジェクトを比較する方法ではありません!!!

(これはスタック オーバーフロー フォーラムに何百回も投稿されています)

また、@Overrideequals メソッドをオーバーライドするように、より明確にするために注釈を追加します...

次のようにコードを改善してください:-

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

}
于 2014-11-11T03:33:06.077 に答える