[Judge] Java Basics - Странна грешка
Здравейте, колеги.
Та днес седнах да решавам задачи от Judge-a - пускам първата, пиша я, изкарва ми очакваният резултат, пускам в Judge - 90/100. Става въпрос за задачата Dozens Eggs от 3 септември. След сравнение с авторското решения видях, че няма никаква разлика между логиката на решенията. Накрая се оказа, че ми гърми последния тест, защото при изпечатване на резултата съм ползвал MessageFormat.format() вместо директно да си пиша инпута с конкатенирани стрингове. С други думи, при мен беше:
System.out.println(MessageFormat.format("{0} dozens + {1} eggs", dozens, eggs));
А в авторското:
System.out.println(dozens + " dozens + " + eggs + " eggs");
Щом си смених моето печатане с това от авторското си ми даде стоте точки. Та, явно да се използва MessageFormat в Judge-a крие рискове. Някой знае ли защо се получава така всъщност? Ще съм благодарен за някакво разяснение.
Всичко най-добро, и успех с подготовката за изпита и самия изпит.
http://pastebin.com/Wa1eni6f
Ето го, първо е моят код, даващ 90/100, след това е авторското решения. Подчертавам, проверил съм граничните случаи, даде ми 100/100 като смених реда с печатането, както съм написал във въпроса горе.
System.out.println(1000);
System.out.println(MessageFormat.format("{0}", 1000));
стартирай тези редове и сам ще си отговориш на въпроса .
...MessageFormat слага разделители при печатането на по-големи числа... Seriously?
Мерси за съдействието, сега вече ще знам - MessageFormat само когато ще изписвам нещо за потребители - в Judge-a не :D
Може да си го ползваш и в джъджа, просто го използвай по този начин:
System.out.println(MessageFormat.format("{0,number,#}", 1000));
Научи повече за форматирането тук.
Тук също има информация.