Проблема при написании статической версии методов сложения и вычитания (это в Java)

Мне нужна помощь в написании статической версии методов сложения и вычитания. Я пытался сделать это, но я не совсем уверен, что это правильный путь, а также мой метод 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;
}
}

2 ответа

Решение

Объекты всегда сравниваются с помощью equals() метод.

== не способ сравнить объекты!!!

(ЭТО ОТЛОЖЕНО О СТОЯЩАХ ВРЕМЕН ИЛИ БОЛЕЕ НА ФОРУМЕ ПЕРВОГО ПОТОКА)

Также добавьте @Override аннотация должна быть более понятной, чтобы вы переопределяли метод equals...

Улучшите ваш код как:-

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

}

Сравнение объектов не работает. Вам нужно сравнить переменные-члены внутри объекта. Я считаю, что если вы сравниваете объекты, все, что вы сравниваете, это место, где хранится объект.

Следующее - это... Я не думаю, что значения realPart и imaginaryPart должны быть статическими. Если вы хотите, чтобы каждый сложный объект имел уникальное значение realPart и imaaryPart, он должен быть просто переменной-членом.

Другие вопросы по тегам