Добрый день! Вопросы:
1) В другом вопросе по этой задаче увидела мысль "зачем писать одно и то же по 20 раз, когда можно это сделать один раз". Захотела единожды объявить сегодняшнюю дату, но если это сделать в теле класса, то я не могу её использовать в статических методах задачи. Подскажите, как это можно реализовать иначе?
2) У меня в консоли метод ofEpochDayExample выводит всё корректно, в чем может быть ошибка?
3) Почему метод ofEpochDayExample работает при условии while(!dayFrom.after(dayWeCount)) ?
dayFrom = 01 января 1970
dayWeCount = 12 сентября 2020
то есть dayFrom изначально находится до (before) dayWeCount. к тому же я увеличиваю её на один день, то есть мне нужно проводить эти действия до тех пор, пока dayFrom.after(dayWeCount), без оператора отрицания. Но IDEA так не считает, а я не могу понять, почему
package com.javarush.task.pro.task16.task1607;
import java.lang.invoke.LambdaConversionException;
import java.time.LocalDate;
import java.time.Month;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/*
Освоение нового API
*/
// В классе Solution реализуй 4 метода:
//
//метод nowExample должен вернуть текущую дату;
//остальные методы должны вернуть дату 12 сентября 2020 года, но разными способами.
//
//Requirements:
//1. Метод nowExample должен вернуть текущую дату.
//2. Метод ofExample должен вернуть дату 12 сентября 2020 года с помощью метода LocalDate.of.
//3. Метод ofYearDayExample должен вернуть дату 12 сентября 2020 года с помощью метода LocalDate.ofYearDay.
//4. Метод ofEpochDayExample должен вернуть дату 12 сентября 2020 года с помощью метода LocalDate.ofEpochDay.
public class Solution {
public static void main(String[] args) {
System.out.println(nowExample());
System.out.println(ofExample());
System.out.println(ofYearDayExample());
System.out.println(ofEpochDayExample());
}
static LocalDate nowExample() {
//напишите тут ваш код
LocalDate today = LocalDate.now();
return today;
}
static LocalDate ofExample() {
//напишите тут ваш код
LocalDate today = LocalDate.of(2020, Month.SEPTEMBER, 12);
return today;
}
static LocalDate ofYearDayExample() {
//напишите тут ваш код
LocalDate todayG = LocalDate.of(2020,9,12);
int numberOfDay = todayG.getDayOfYear();
LocalDate today = LocalDate.ofYearDay(2020, numberOfDay);
return today;
}
static LocalDate ofEpochDayExample() {
//напишите тут ваш код
Calendar dayFrom = new GregorianCalendar(1970, Calendar.JANUARY,1);
Calendar dayWeCount = new GregorianCalendar(2020, Calendar.SEPTEMBER,12);
int count = 0;
do {
dayFrom.add(Calendar.DAY_OF_MONTH, 1);
count++;
} while(!dayFrom.after(dayWeCount));
long countOfDays = count;
return LocalDate.ofEpochDay(countOfDays);
}
}