Проверка високосного года в Java — код, вывод и объяснение

Год считается високосным, если он делится на 4 без остатка, но с одним исключением: век (год, оканчивающийся на 00) високосный только если делится на 400. Например, 1900 — невисокосный, а 2000 — високосный.

Пример: проверка високосного года

В программе используется вложенный if для проверки всех трёх условий: делимость на 4, на 100 и на 400.

public class Main {

  public static void main(String[] args) {

    // year to be checked
    int year = 1900;
    boolean leap = false;

    // if the year is divided by 4
    if (year % 4 == 0) {

      // if the year is century
      if (year % 100 == 0) {

        // if year is divided by 400
        // then it is a leap year
        if (year % 400 == 0)
          leap = true;
        else
          leap = false;
      }

      // if the year is not century
      else
        leap = true;
    }

    else
      leap = false;

    if (leap)
      System.out.println(year + " is a leap year.");
    else
      System.out.println(year + " is not a leap year.");
  }
}

Вывод:

1900 is not a leap year.

В примере проверяется, является ли год 1900 високосным. Поскольку 1900 — это век (оканчивается на 00), он должен делиться и на 4, и на 400.

Но 1900 не делится на 400, поэтому он не является високосным.

Если поменять год на 2012, вывод будет:

2012 is a leap year.

Здесь 2012 — не век, поэтому достаточно делимости только на 4. Так как 2012 делится на 4 — это високосный год.