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)

Вы можете найти следующий високосный год следующим образом:

  1. Начать со следующего года после year, Используйте ту же логику, которую вы уже написали, чтобы определить, является ли это високосным годом.
  2. Если это не так, продолжайте увеличивать значение "следующий год", пока не найдете високосный год.

Вы найдете полезным разместить свой if логика в отдельном методе, чтобы избежать повторения кода и логики.

Другие вопросы по тегам