С помощью LocalDate вывести все дни рождения человека
Необходимо вывести все дни рождения человека в виде "Номер ДР, дата ДР, день недели" построчно с помощью LocalDate. Даты не выводятся, перенос строки не работает.
import java.text.SimpleDateFormat; import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
// ввожу дату своего рождения
int day = 29;
// январь - месяц 0, значит, ноябрь - 10-й
int month = 10;
int year = 1972;
System.out.println(collectBirthdays(year, month, day));
}
public static String collectBirthdays(int year, int month, int day) {
// строитель строк
StringBuilder builder = new StringBuilder();
// формат, в котором нам необходим вывод информации
SimpleDateFormat format = new SimpleDateFormat(" - dd.MM.yyyy - EEEE");
//номер строки
int num = 0;
// нулевой ДР
LocalDate date = LocalDate.of(year, month, day);
// сегодняшняя дата
LocalDate today = LocalDate.now();
while(date.isBefore(today)) {
//строитель складывает номер строки,
builder.append(num).append(format.format(date).append("\n"));
//прибавляем год
date = date.plusYears(1);
//увеличиваем номер строки на 1
num++;
}
// возвращаем построенное в строку
return builder.toString();
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Не тот класс для форматирования, плюс в билдере неправильно закрыта скобка
public class Main {
public static void main(String[] args) {
// ввожу дату своего рождения
int day = 29;
// январь - месяц 0, значит, ноябрь - 10-й
int month = 10;
int year = 1972;
System.out.println(collectBirthdays(year, month, day));
}
public static String collectBirthdays(int year, int month, int day) {
// строитель строк
StringBuilder builder = new StringBuilder();
// формат, в котором нам необходим вывод информации
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(" - dd.MM.yyyy - EEEE");
//номер строки
int num = 0;
// нулевой ДР
LocalDate date = LocalDate.of(year, month, day);
// сегодняшняя дата
LocalDate today = LocalDate.now();
while (date.isBefore(today)) {
//строитель складывает номер строки,
builder.append(num++).append(formatter.format(date)).append("\n");
//прибавляем год
date = date.plusYears(1);
}
// возвращаем построенное в строку
return builder.toString();
}
}