Если Вы поставили себе цель стать крутым Java-кодером и только начинаете свой путь с JavaRush, если Ваша цель получить максимум пользы от данного ресурса, а не бесполезное прожигание времени путем бездумного "отстреливания" задачек - этот топик для Вас.
Скажу честно, к написанию этого слегка брюзжащего поста меня подстегнула задача level05.lesson12.bonus03, а точнее один и тот же бесконечный вопрос возникающий буквально каждый день, а то и несколько раз в день в соседних топиках. Встречая очередной "крик о помощи" задумываешься, ну неужели человеку проще написать вопрос и ждать ответа неопределенное время, чем опустить взгляд на строчку ниже и прочитать то, что писалось уже не единожды.
Итак, предлагаю Вам свой алгоритм работы с заданиями JavaRush. Все изложенное ниже выработано на собственном опыте и опыте других студентов.
Решаем задачу самостоятельно.
- Внимательно читаем задание до конца. Не единожды замечал за собой, читаешь задание, где-то к середине в голове уже начинает складываться решение, воодушевленный тем, "какой Я умный" пишешь код, жмешь заветную кнопку и видишь - «Программа не прошла тестирование». Epic fail.
- Проверяем общий вид задачи. Убеждаемся что мы не меняли имена пакетов, классов, методов полученных с сервера, а новые методы, классы, пакеты созданы согласно заданию (если это оговорено). При сдаче на проверку в задаче не должно быть задокументированных кусков кода, текстовые коментарии не содержащие кода допустимы.
- Перечитываем условия задачи. Да, перечитываем его до тех пор, пока Вы не будете полностью уверены что поняли его верно и разночтения исключены. После этого возвращайтесь к задаче. Обязательно учтите что входные данные указанные в задании даются именно для примера, а не как исчерпывающее условие. При тестировании придумывайте свои данные, используйте граничные данные, пустые значение, null и прочие варианты которые могут подсунуть Вашей программе. Адекватного ответа от сервера, что же ему не понравилось, Вы не дождетесь, надейтесь только на себя.
- Итак, на Ваш взгляд задача работает правильно, корректно обрабатывают любые входящие данные, ответ тоже дает правильный, но сервер ее не принимает... Проверяйте вывод! Тут важно все, порядок ввода/вывода строк в консоль, вспомогательные сообщения, которые Вы добавили чтобы "программа была более красивой", лишний пробел в конце вполне может поставить крест на всей задаче. На данном этапе, наша с Вами задача научиться правильно решать поставленные задачи, а не создавать красивые программы с дружественным интерфейсом. Вообще, рекомендую хотя бы поверхностно ознакомиться с теорией тестирования программ. Хотя бы для того, чтобы хоть чуть-чуть представлять что может происходить с Вашей программой на сервере при проверке, как она может проверяться, и что в Вашей задаче может препятствовать успешному прохождению тестирования.
- Пункт желательный, но не обязательный к исполнению, так сказать уровень Nightmare. Представьте, что это задача не Ваша, а кто-то попросил Вас найти в ней ошибку. Поработайте компилятором, прогоните мысленно весь жизненный цикл программы в голове. Очень часто при подобном подходе можно заметить узкие места программы.
Ищем помощи.
Итак, мы крутили задачу и так и сяк, но каменный цветочек не выходит, есть вопросы по заданию, не понятен алгоритм, сомневаетесь в выходных данных (сюда можете добавить свои пункты).- Не спешите создавать новую тему или писать Ваш вопрос в пером попавшемся топике!
Поверьте, 90% всех возникающих у Вас вопросов уже кто-то задавал до Вас и на них уже были даны ответы. Еще на 9% вопросов можно найти ответы на просторах интернета. Обычно, на поиск ответа на возникший вопрос уходит не больше 15 минут. В любом случае, ответ найденный самостоятельно принесет Вам гораздо больше пользы.
Самый простой способ получить ответы на Ваши вопросы.
Попутно Вы получите разъяснения задания, ссылки на теоретический материал, ознакомитесь с различными подходами к решению данной задачи, найдете кучу тестовых данных и просто познакомитесь с другими "жителями" этого форума.
- Давайте уважать друг друга! Если Вы не выполнили первый пункт, не стоит просить других пользователей предоставить Вам тестовые данные или найти ошибку в Вашей программе. Никому не интересно по десять раз писать одно и то же или работать Вашим личным гуглом. Итак, Вы искали, но не нашли, или нашли, но не знаете как исправить. Как правильно задать вопрос?
- Не создавайте новую тему, если есть существующие! Да, это не запрещено правилами форума, но подумайте о следующих студентах идущих по Вашим стопам. Думаю, гораздо проще найти ответы в одной ветке форума нежели в паре десятков.
- Публикуя свой исходный код, делайте это полностью! Да, включая задание, package, import и прочее. Ошибка может затесаться где угодно, а задание поможет отвечающему быстрее войти в курс дела, не тратя силы и время на выяснение о чем вообще идет речь.
- Правильно оформляйте свой код!
Неформатированный код очень сильно затрудняет чтение и понимание, этим Вы ускорите получение ответа.
- Перед публикацией, попытайтесь упростить Ваш код. Если код содержит какие-либо "хитрые" моменты, прокомментируйте их. Учитывайте, что другому человеку придется прочитать и понять Ваш код.
- Постарайтесь быть как можно точнее в постановке вопроса. Как бы не смешно это звучало, но порой требуется переводчик "с русского на русский".
- Ну и на по следок. Будьте вежливы независимо от полученного ответа. ;)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Читаем FAQ
Добро пожаловать!
P.S. Врать не буду, был приятно удивлен увидев что администрация сделала отсылку к моей статье.
— вызвали проблемы задачи 8-9 уровней, как и 17 -18 по причине непонимания кода
— когда вы просто по 3 часа разбираете код из 3 классов, где методы переплетены и по 100 раз вызывают друг друга
— когда вроде понимаете, зачем конструктор, но повторить не можете.
для меня эти 3 этапа были контрольными токами, на которых я упирался в тупик. Этапами, на которых не бросить обучение удалось только напряжением силы воли.
Когда ты смотришь в код задачи изученой 2 дня назад темы и понимаешь, что все забыл и сегодня ты в нем ничего не понимаешь…
НЕ ДЕЛАЙТЕ МОЕЙ ОШИБКИ — НЕ ЛЕЗЬТЕ НА ФОРУМ ЗА ГОТОВЫМ КОДОМ ИЛИ ПОДСКАЗКОЙ.
Каждая сданная с подсмотром подсказки задача ОТДАЛЯЕТ ВАС от обучения. Сейчас мне дико надо пройти снова те задачи на потоки, а я не могу. рву на себе волосы, что спешил проскочить сложный уровень и проматывал задачи. А теперь мне не хватает опыта их решения, чтобы пройти ту же биг задачу на 27 уровне.
вернитесь в тему задачи, перечитайте. Лезьте в интернет. Куда угодно. на форум идите только в 2 случаях
— программа прошла ваши тесты, но не принимается
— вы сдали задачу и идете посмотреть как эту задачу сделали другие.
К примеру, есть очень крутая бонусная задача «кроссворд». Я убил 2 дня на алгоритм, он вышел в 300 строк.
и когда я таки ее сдал и полез на форум, то увидел алгоритм на 50 строк. Но я никогда бы не понял его красоты и сути, если бы не потратил 2 дня на свой.
Для копипаста — коддинга не нужен джавараш.
Сейчас я этот алгоритм применяю в своих проектах игр — крестики — нолики на большом поле, морской бой от хед ферст у меня разросся до 8 классов, причем я выкинул их класс с логикой и написал с ноля свой. С сериализацией, ИИ и прочими свистелками, которые я дописываю до сих пор (Использую Java FX 2.0 для гуи, поскольку свинг устарел и жить ему от силы еще пару лет. Причем продираться через FX приходится с минимумом
Примем к сведению :)
— Поставьте пожалуйста песню про Анапу!
— ?????
— А-на-па-следок я скажу…
По сабжу — хорошо написано, спасибо =)
Сам нахожу (если уже уперся совсем) подсказки в уже имеющихся темах — по 1 пункту )