Obecnie uczę się podstawowej Java i mam problem z moim kodem, którego nie mogę wymyślić. Zasadniczo to, co mówi tytuł. Mój kompilator Java mówi mi, że jest błąd z moją niestandardową metodą compareTo, mówiąc, że musi zwrócić int. Problem polega na tym, o ile mogę powiedzieć, że zwraca on int. Mimo to wciąż daje mi błąd. Czy ktoś mógłby wskazać w moim kodzie, co jest nie tak? I już wdrożyłem porównywalne w mojej klasie. Oto moja metoda:Zmodyfikowana Java metoda compareTo mówi, że musi zwrócić int, ale powinna zwracać jedną
public int compareTo(Homework other) {
if (getDaysLate() < other.getDaysLate()) {
return -1;
} else if ((dateSubmitted == other.dateSubmitted)
&& (files.compareTo(other.files) == -1)) {
return -1;
} else if ((dateSubmitted == other.dateSubmitted)
&& (files == other.files)) {
if (name.compareTo(other.name) == -1) {
return -1;
} else if (name.compareTo(other.name) == 1) {
return 1;
} else if (name.compareTo(other.name) == 0) {
return 0;
}
} else {
return 0;
}
}
@ TedHopp Right (dzięki, naprawiono). Poprawiłem również, że antysymetria jest wymagana tylko dla ** znaku ** wyniku (oba są równe zero lub jeden jest dodatni, a drugi ujemny). Wartość bezwzględna nie ma znaczenia. – Javier