Если Вы поставили себе цель стать крутым Java-кодером и только начинаете свой путь с JavaRush, если Ваша цель получить максимум пользы от данного ресурса, а не бесполезное прожигание времени путем бездумного "отстреливания" задачек - этот топик для Вас. Скажу честно, к написанию этого слегка брюзжащего поста меня подстегнула задача level05.lesson12.bonus03, а точнее один и тот же бесконечный вопрос возникающий буквально каждый день, а то и несколько раз в день в соседних топиках. Встречая очередной "крик о помощи" задумываешься, ну неужели человеку проще написать вопрос и ждать ответа неопределенное время, чем опустить взгляд на строчку ниже и прочитать то, что писалось уже не единожды. Итак, предлагаю Вам свой алгоритм работы с заданиями JavaRush. Все изложенное ниже выработано на собственном опыте и опыте других студентов.
Решаем задачу самостоятельно.
  1. Внимательно читаем задание до конца. Не единожды замечал за собой, читаешь задание, где-то к середине в голове уже начинает складываться решение, воодушевленный тем, "какой Я умный" пишешь код, жмешь заветную кнопку и видишь - «Программа не прошла тестирование». Epic fail.
  2. Проверяем общий вид задачи. Убеждаемся что мы не меняли имена пакетов, классов, методов полученных с сервера, а новые методы, классы, пакеты созданы согласно заданию (если это оговорено). При сдаче на проверку в задаче не должно быть задокументированных кусков кода, текстовые коментарии не содержащие кода допустимы.
  3. Перечитываем условия задачи. Да, перечитываем его до тех пор, пока Вы не будете полностью уверены что поняли его верно и разночтения исключены. После этого возвращайтесь к задаче. Обязательно учтите что входные данные указанные в задании даются именно для примера, а не как исчерпывающее условие. При тестировании придумывайте свои данные, используйте граничные данные, пустые значение, null и прочие варианты которые могут подсунуть Вашей программе. Адекватного ответа от сервера, что же ему не понравилось, Вы не дождетесь, надейтесь только на себя.
  4. Итак, на Ваш взгляд задача работает правильно, корректно обрабатывают любые входящие данные, ответ тоже дает правильный, но сервер ее не принимает... Проверяйте вывод! Тут важно все, порядок ввода/вывода строк в консоль, вспомогательные сообщения, которые Вы добавили чтобы "программа была более красивой", лишний пробел в конце вполне может поставить крест на всей задаче. На данном этапе, наша с Вами задача научиться правильно решать поставленные задачи, а не создавать красивые программы с дружественным интерфейсом. Вообще, рекомендую хотя бы поверхностно ознакомиться с теорией тестирования программ. Хотя бы для того, чтобы хоть чуть-чуть представлять что может происходить с Вашей программой на сервере при проверке, как она может проверяться, и что в Вашей задаче может препятствовать успешному прохождению тестирования.
  5. Пункт желательный, но не обязательный к исполнению, так сказать уровень Nightmare. Представьте, что это задача не Ваша, а кто-то попросил Вас найти в ней ошибку. Поработайте компилятором, прогоните мысленно весь жизненный цикл программы в голове. Очень часто при подобном подходе можно заметить узкие места программы.
Ищем помощи.
Итак, мы крутили задачу и так и сяк, но каменный цветочек не выходит, есть вопросы по заданию, не понятен алгоритм, сомневаетесь в выходных данных (сюда можете добавить свои пункты).
  1. Не спешите создавать новую тему или писать Ваш вопрос в пером попавшемся топике! Поверьте, 90% всех возникающих у Вас вопросов уже кто-то задавал до Вас и на них уже были даны ответы. Еще на 9% вопросов можно найти ответы на просторах интернета. Обычно, на поиск ответа на возникший вопрос уходит не больше 15 минут. В любом случае, ответ найденный самостоятельно принесет Вам гораздо больше пользы. Самый простой способ получить ответы на Ваши вопросы. Начинающему JavaRushевцу. - 1 Попутно Вы получите разъяснения задания, ссылки на теоретический материал, ознакомитесь с различными подходами к решению данной задачи, найдете кучу тестовых данных и просто познакомитесь с другими "жителями" этого форума.
  2. Давайте уважать друг друга! Если Вы не выполнили первый пункт, не стоит просить других пользователей предоставить Вам тестовые данные или найти ошибку в Вашей программе. Никому не интересно по десять раз писать одно и то же или работать Вашим личным гуглом.
  3. Итак, Вы искали, но не нашли, или нашли, но не знаете как исправить. Как правильно задать вопрос?
  4. Не создавайте новую тему, если есть существующие! Да, это не запрещено правилами форума, но подумайте о следующих студентах идущих по Вашим стопам. Думаю, гораздо проще найти ответы в одной ветке форума нежели в паре десятков.
  5. Публикуя свой исходный код, делайте это полностью! Да, включая задание, package, import и прочее. Ошибка может затесаться где угодно, а задание поможет отвечающему быстрее войти в курс дела, не тратя силы и время на выяснение о чем вообще идет речь.
  6. Правильно оформляйте свой код! Начинающему JavaRushевцу. - 2 Неформатированный код очень сильно затрудняет чтение и понимание, этим Вы ускорите получение ответа.
  7. Перед публикацией, попытайтесь упростить Ваш код. Если код содержит какие-либо "хитрые" моменты, прокомментируйте их. Учитывайте, что другому человеку придется прочитать и понять Ваш код.
  8. Постарайтесь быть как можно точнее в постановке вопроса. Как бы не смешно это звучало, но порой требуется переводчик "с русского на русский".
  9. Ну и на по следок. Будьте вежливы независимо от полученного ответа. ;)
Надеюсь эти простые правила помогут Вам получить от обучения не только максимум пользы но и кучу положительных эмоций, избавят от негатива Вас и других обитателей JavaRush. От всего сердца желаю успехов в прохождении курса!