Надо вернуть все дни рождения

По заданию надо ВЕРНУТЬ строки с днями рождения от 0 лет до н.в. Задание с тестами и один из них "прошлый год", где надо вернуть 2 даты - первую (прошлый год) и вторую (нынешняя дата). Выводятся обе, а возвращается только последняя. Посоветовали с помощью StringBuilder "накапливать" (это как?) результат цикла, а я не знаю, как это сделать, уже всё перепробовал. Помогите, пожалуйста

  public static String collectBirthdays(int year, int month, int day) {
    LocalDate date = LocalDate.of(year, month, day);
    LocalDate todayDate = LocalDate.now();
    DateTimeFormatter formatDate = DateTimeFormatter.ofPattern("dd.MM.yyyy - E", Locale.ENGLISH);
    int a = 0;
    String text = "";
    while (date.isBefore(todayDate) || date.equals(todayDate)) {
        text = a + " - " + date.format(formatDate);
        System.out.println(text); //выводит нужное 
        a++;
        date = date.plusYears(1);
    }
    return text; //возвращает только последнею дату
}

Ответы (2 шт):

Автор решения: Вася Воронцов

В каждой итерации дополняем StringBuilder и выводим text, возвращаем sb.toString() с объединёнными в одну строку датами:

public static String collectBirthdays(int year, int month, int day) {
    LocalDate date = LocalDate.of(year, month, day);
    LocalDate todayDate = LocalDate.now();
    DateTimeFormatter formatDate = DateTimeFormatter.ofPattern("dd.MM.yyyy - E", Locale.ENGLISH);
    int a = 0;
    String text = "";

    //Создаём экземпляр StringBuilder
    StringBuilder sb = new StringBuilder();

    while (date.isBefore(todayDate) || date.equals(todayDate)) {
        text = a + " - " + date.format(formatDate);

        //Добавить в StringBuilder новую строку с датой
        sb.append(text);
        //Разделить между датами
        sb.append(" ");

        System.out.println(text);
        a++;
        date = date.plusYears(1);
    }
    return sb.toString();
}
→ Ссылка
Автор решения: Андрей Волков

Вы на каждой итерации перезатираете переменную text, а вам нужно добавлять к ней новые дни рождения.

while (date.isBefore(todayDate) || date.equals(todayDate)) {
        text = text + a + " - " + date.format(formatDate) + System.lineSeparator();
        a++;
        date= date.plusYears(1);
    }

    return text;
}
→ Ссылка