Это упражнение от Java МОО C 92,3
Просто у меня есть две даты. И метод, который дает мне разницу между ними.
(например: 3/10/2011 и 3/9/2012)
Мой метод утверждает, что до тех пор, пока month и day больше, чем последующие, затем просто вычтите тот, для которого вызывается метод.
Вот проблема:
Если дата, указанная в качестве параметра, имеет больший год, то, когда я вычитаю эти две, я получаю отрицательное число (например: 2011 - 2012).
public int differenceInYears(MyDate comparedDate){
int result = 0;
if(this.month >= comparedDate.month && this.day >= comparedDate.day){
result = this.year - comparedDate.year;
}else{
result = this.year - comparedDate.year;
result--;
}
return result;
Код, отличный от остального, относится к случаю, когда год не тот, каким он может выглядеть (пример: если бы я родился в мае 2000 года, технически мне должно быть 20, поскольку это 2020 , но, поскольку это еще не май, мне 19).
Мои условия все еще выполняются в первом операторе if, даже если результат неверен. Я попытался найти случай, когда я могу успокоить оба случая, когда не имеет значения, какая дата идет первой, но я борюсь с логи c. Был бы признателен за вклад.