С помощью 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();
    }

}
→ Ссылка