Я работаю с кодом, который определяет, год ли високосный год или нет. Это функция, которая у меня есть, какая формула високосного года - лучший вариант?
private boolean leapYear(int year)
{
boolean t = false;
if((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
t = true;
return t;
}
функция работает нормально, но я afried, что он может иметь некоторые ошибки, Вот почему у меня есть этот другой вариант:
private boolean esBisiesto(int year)
{
boolean t = false;
if((year % 4 == 0)&&(year % 100!=0 ||(year % 100 == 0 && year % 400 == 0)))
t = true;
return t;
}
но я не знаю, какой из них является лучшим вариантом.
Какие даты вы тестируете? Если вы проверяете только даты между 1901 и 2099 годами, тогда будет действовать только 'year% 4 == 0'. Другое условие не срабатывает, если дата не находится за пределами этого диапазона. – cup
@laune: Как неверна вторая форма? Я провел несколько тестов на них обоих, и они оба выглядели правильно. – Makoto
@Makoto Вы можете сразу увидеть, что ** вторая форма ** содержит ** избыточный ** год% 100 == 0, потому что невозможно, чтобы целое число, кратное 400, тоже не кратно 100. Я ошибался, говоря, что вторая форма неверна, но я был прав, когда я цитировал круглые скобки вокруг '||'. Первая форма выражает правило простым способом. – laune