Проблема при написании статической версии методов сложения и вычитания (это в 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, он должен быть просто переменной-членом.