Java-программа: калькулятор високосного года
Я написал программу для расчета високосного года. Во второй части я должен напечатать количество лет до следующего високосного года, если год не високосный. Для 2097 года результат показывает 3 года до следующего скачка, но он должен составлять 7 лет. Я думаю, что я сделал ошибку с кодом в последней строке. Пожалуйста, помогите мне. Это мой код до сих пор.
public static void main(String[] args) {
// TODO code application logic here
int year = 2093;
if((year%4==0) && year%100!=0){
System.out.println(year + " is a leap year.");
}
else if ((year%4==0) && (year%100==0)&& (year%400==0)) {
System.out.println(year + " is a leap year.");
}
else {
System.out.println(year + " is not a leap year");
System.out.println(4-(year%4) + " years untill next leap year");
}
2 ответа
Основной код:
int year = 2093;
if (isLeapYear(year) {
System.out.println(year + " is a leap year");
} else {
int moreYears = nextLeapYear(year) - year;
System.out.println(moreYears + " more years until next leap year");
}
Проверьте, является ли год високосным:
public boolean isLeapYear(int year)
{
if (year % 4 != 0)
return false;
else if (year % 100 != 0)
return true;
else if (year % 400 != 0)
return false;
else
return true;
}
Получите следующий високосный год:
public int nextLeapYear(int year)
{
while( !isLearpYear(year) )
year++;
return year;
}
Ваше определение високосного года кажется правильным. Однако вы рассчитываете следующий високосный год на основе неправильного правила "каждые 4 года - високосный год" с помощью следующего выражения:
4-(year%4)
Вы можете найти следующий високосный год следующим образом:
- Начать со следующего года после
year
, Используйте ту же логику, которую вы уже написали, чтобы определить, является ли это високосным годом. - Если это не так, продолжайте увеличивать значение "следующий год", пока не найдете високосный год.
Вы найдете полезным разместить свой if
логика в отдельном методе, чтобы избежать повторения кода и логики.