Вывод дней недели Дня рождений
Программа должна выводить какой день недели был каждой год если считать (что день рождение было 21 день месяца 5 месяц 2014 год) если добавить то что закоменнтировал то вообще возвращает пустую строку,если оставляю выводит почему то всё время 12 месяц...Не понимаю в чем проблема, хотя до этого делаю проверку sout и выводит ту что передал.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
int day = 21;
int month = 5;
int year = 2014;
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("0 - dd.hh.yyyy - EE", Locale.ENGLISH);
Calendar calendar = new GregorianCalendar(year, month, day, 0, 0, 0);
Calendar calendar2 = new GregorianCalendar();
month--;
if (month == -1) {
month = 0;
}
System.out.println(calendar.getTime());
System.out.println(calendar2.getTime());
if (calendar2.getTimeInMillis() == calendar.getTimeInMillis()) {
builder.append(format.format(calendar.getTime())).append("\n");
return builder.toString();
}
// if (calendar2.getTimeInMillis() > calendar.getTimeInMillis()) {
//return builder.append("").toString();
// }
for (int i = 0; calendar.getTimeInMillis() <= calendar2.getTimeInMillis(); i++) {
builder.append(format.format(calendar.getTime())).append("\n");
calendar.add(Calendar.YEAR, 1);
}
return builder.toString();
}
}
Ответы (2 шт):
Автор решения: Николай
→ Ссылка
я тоже сейчас на этом уровне. Мне кажется, Ваше решение очень трудночитаемо. Я пока решил так, но у меня две ошибки, и я думаю ошибки в тесте.
public static String collectBirthdays(int year, int month, int day) {
month -= 1;
String birthDay = "";
int countNumbers = 0;
Date hereDate = new Date();
DateFormat dataFormat = new SimpleDateFormat(" - dd.MM.yyyy - E", Locale.ENGLISH);
Calendar calendar = new GregorianCalendar(year, month, day);
Date birthDate = calendar.getTime();
while (!birthDate.after(hereDate)) {
birthDay += countNumbers + dataFormat.format(birthDate) + System.lineSeparator();
calendar.add(Calendar.YEAR, +1);
birthDate = calendar.getTime();
countNumbers++;
}
return birthDay;
}
Автор решения: deadu
→ Ссылка
public static String collectBirthdays(int year, int month, int day) {
StringBuilder builder = new StringBuilder();
SimpleDateFormat format = new SimpleDateFormat(" - dd.MM.yyyy - EE", Locale.ENGLISH);
Calendar calendar = new GregorianCalendar(year, month - 1, day, 0, 0, 0);
Calendar today = Calendar.getInstance();
int number = 0;
while (calendar.before(today)) {
builder.append(number).append(format.format(calendar.getTime())).append("\n");
calendar.add(Calendar.YEAR, 1);
number++;
}
return builder.toString();
}