День программиста. Как найти?

231
18 марта 2018, 21:03

Условие задачи: День программиста отмечается в 255-й день года (при этом 1 января считается нулевым днем). Требуется написать программу, которая определит дату (месяц и число григорианского календаря), на которую приходится День программиста в заданном году.

Выводить дату необходимо в формате DD/MM/YYYY, где DD — число, MM — номер месяца (01 — январь, 02 — февраль), YYYY — год в десятичной записи

А вводиться целое число от 1 до 9999 включительно, год нашей эры.

Вот код:

Scanner in = new Scanner(System.in);
int YEAR = in.nextInt();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar gCal = new GregorianCalendar(YEAR, 0, 0);
gCal.add(Calendar.DAY_OF_YEAR, 256);
String dayP = sdf.format(gCal.getTime());
System.out.println(dayP);

Не могу понять проблему. В компиляторе всё проходит как мне нужно, в Високосные года день 12/09/2000, в другие он 13/09/2100.

Но сайт не принимает данный код и не проходит 6 тест, не понимаю какие данные не считываются. Может проблемы с Calendar и SDF? Просто небольшой опыт с ними, и я воспользовался этим.

Answer 1

GregorianCalendar по умолчанию поступит как Григорианский календарь только после года 1582.

Вы можете использовать метод setGregorianChange и метод setCalendar для изменения поведения:

  SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
  GregorianCalendar gCal = new GregorianCalendar();
  gCal.setGregorianChange(new Date(Long.MIN_VALUE));
  gCal.set(YEAR, 0, 0);
  gCal.add(Calendar.DAY_OF_YEAR, 256);
  sdf.setCalendar(gCal);
  String dayP = sdf.format(gCal.getTime());
  System.out.println(dayP);
Answer 2
int y = in.nextInt();
bool isLeap = y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
int d = isLeap ? 12 : 13;
System.out.printf("%02d/09/%04d", d, y);
READ ALSO
Как высчитать ближайшие дни рождения с помощью LocalDate?

Как высчитать ближайшие дни рождения с помощью LocalDate?

Есть список контактов, каждый контакт содержит день рождения типа LocalDateНужно вывести все контакты, у которых день рождения в ближайшие 2 недели

209
Как создать таблицу в JDBC MySQL

Как создать таблицу в JDBC MySQL

Начал изучать Mysql, проблемы с синтаксисомНе могу создать таблицу

220
Почему у меня происходит утечка памяти? всего 3 класса

Почему у меня происходит утечка памяти? всего 3 класса

У меня есть главный поток(main(String [] args)) , в нем есть

195
Как создать действие обновление?

Как создать действие обновление?

Мне необходимо действие обновление, как в браузере (к примеру, chrome)Пользователь тянет вниз, при этом появляется круг

192