Перейти к основному содержимому

Нахождение високосных лет в Java

· 2 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Обзор

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

Високосный год – это год, который делится на 4 и 400 без остатка . Таким образом, годы, которые делятся на 100, но не делятся на 400, не подходят, даже если они делятся на 4.

2. Использование API календаря до Java-8

Начиная с Java 1.1, класс GregorianCalendar позволяет нам проверять, является ли год високосным:

public boolean isLeapYear(int year);

Как и следовало ожидать, этот метод возвращает значение true , если данный год является високосным, и значение false , если год не является високосным .

Годы до нашей эры (до Рождества Христова) должны передаваться как отрицательные значения и рассчитываются как 1 – год . Например, 3 год до н.э. представлен как -2, поскольку 1 – 3 = -2.

3. Использование API даты/времени Java 8+

Java 8 представила java . time с гораздо лучшим API даты и времени .

Класс Year в java . time имеет статический метод для проверки того, является ли данный год високосным:

public static boolean isLeap(long year);

И у него также есть метод экземпляра, чтобы сделать то же самое:

public boolean isLeap();

4. Использование API Joda-Time

Joda -Time API — одна из наиболее часто используемых сторонних библиотек среди проектов Java для утилит даты и времени. Начиная с Java 8, эта библиотека находится в поддерживаемом состоянии , как указано в исходном репозитории Joda-Time GitHub .

Не существует предопределенного API-метода для поиска високосного года в Joda-Time. Однако мы можем использовать их классы LocalDate и Days для проверки високосного года:

LocalDate localDate = new LocalDate(2020, 1, 31);
int numberOfDays = Days.daysBetween(localDate, localDate.plusYears(1)).getDays();

boolean isLeapYear = (numberOfDays > 365) ? true : false;

5. Вывод

В этом руководстве мы увидели, что такое високосный год, логику его поиска и несколько API-интерфейсов Java, которые мы можем использовать для его проверки.

Как всегда, фрагменты кода можно найти на GitHub.