JavaRush/Курсы/Java Syntax/Задачки на вывод StackTrace

Задачки на вывод StackTrace

Открыта

— Привет, Амиго!

— Привет, Диего!

— Вот тебе несколько задач на вывод стек-трейса.

9
Задача
Java Syntax Pro Beta,  9 уровень2 лекция
Недоступна
Randomizer
В этой задаче тебе предстоит реализовать метод generateNumber(), который будет возвращать случайное число от 0 до 99. В методе generateNumber() используй метод Math.random().
9
Задача
Java Syntax Pro Beta,  9 уровень2 лекция
Недоступна
Magic 8 ball
В этой задаче тебе предстоит реализовать метод getPrediction() в классе MagicBall, который будет работать как шар предсказаний. Он случайным образом возвращает фразу-ответ на заданный вопрос. В методе getPrediction() нужно использовать метод nextInt(int) класса Random, который должен возвращать знач
Комментарии (430)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #3197665
Уровень 25
Expert
19 июля 2023, 16:13
Здравствуйте подскажите пожалуйста где можно дополнительную статью или материл ??? по этой теме .
20 декабря 2022, 17:19
Недопонимание предпоследней задачи, хотя методом тыка решил ее. Не могу понять, почему в задаче "Стек-трейс длиной 10 вызовов" method1().length - 12, а method10().length - 3 в исправленном состоянии. По дебагеру массивы StackTraceElement[ ] в method1() - 3 элемента, в method10() - 12 элементов. Возвращают же эти методы массивы содержащие размер цепочки до метода из которого мы вызываем? А length возвращает длину переданных массивов. Но все проходит наоборот! Вообще, если в method10() вызвать sout - Thread.currentThread().getStackTrace().length, то получается такая картина 12 3 12 3 То есть длина массива StackTraceElement[ ] в методе меняется несколько раз. Что за хрень? Блин уже мозги кипят.
Василий
Уровень 25
17 марта 2023, 12:57
Разобрал это в обсуждении к задаче. Если у кого-то еще есть непонимание - жмите кнопку обсуждение в задаче, там постарался расписать.
6 декабря 2022, 17:27
Где я что пропустил, в какой предыдущей лекции, что не угадал про [2]? Thread.currentThread().getStackTrace()[2].getMethodName();
DmitryStudent в Home
8 декабря 2022, 09:07
да нигде этого не было. В наших задачах получается: 0 - это гетМетодНейм 1- это название самого этого метода где выполняется код 2- это название метода который вызывает наш метод, где выполняется код
Lo
Уровень 35
Expert
8 июля 2023, 13:28
Вот спасибо умный человек! Читала доп материал к этой лекции, но про вызов по индексу что-то не нашла пока, почитаю еще))
YesOn
Уровень 13
24 сентября 2022, 23:26
Да, задачи деревянные, неожиданно.
Fat.Lilliput
Уровень 15
9 июля 2022, 13:32
Лучше теоретическую часть в серии Java Syntax Pro посмотреть, а не в Java Syntax New, там хоть описание методов StackTraceElement есть https://javarush.com/quests/lectures/questsyntaxpro.level14.lecture05
Евгений N
Уровень 23
18 апреля 2022, 20:40
имхо, задачи 1-2 бесполезны, лучше сразу в ответ идти, 3-4 можно поугадывать минут 5. в последней задаче после доработки log не поленитесь добавить метод
method1() { log(" La-la-la In method1 "); }
и его вызов из main. так более понятно зачем нужен метод log и как оно работает.
КириллBackend Developer в Dats.team
16 декабря 2021, 06:39
Господа будущие разработчики, кто не до конца понял как работает стек трейс и сделал задачи "методом тыка" - попробуйте сделать нормальный вывод стека в консоль и посмотреть что в нём лежит в каждом методе. Жизнь сразу станет проще.
tararabumbia
Уровень 26
10 декабря 2021, 16:48
задачки решаемы, но без понятия как работают исключения, стек как-будто бесполезен. Лучше перед этой темой нормальную теорию в книжках по jave почитать
Ivan
Уровень 25
25 февраля 2022, 12:26
это тут почти каждой темы касается...
Anonymous #2902741
Уровень 25
25 ноября 2021, 16:41
Все сделал с первого раза, но что именно я делал и как оно получилось так и не понял Чисто задачки на копипасту
Anonymous #2743933
Уровень 15
22 ноября 2021, 03:44
Я наверно один недалекий))). JavaRush дает три строчки теории и потом в задачах появляется требование знать материал, которого еще не было в лекциях. Например во второй задаче в решении есть "getStackTrace()[2]". Вопрос: где в теоретической части изложено, что можно обращаться таким образом. Почему именно [2], а не [1] или [0]?
Булат
Уровень 10
19 января 2022, 10:32
Да это жестко, где-то на javarush было написано, что тут не вся инфа. JavaRush нужно совмещать с чем-нибудь, например какую нибудь книжку найти проходить темы, а практиковаться здесь(ибо в книгах редко есть практические задачи)
FuryCydonian
Уровень 22
29 января 2022, 15:23
ну собственно потому что все и не должно быть таким, чтоб только копипастом делать можно было. Надо гуглить, думать, а вы что хотели) И необязательно какие-то еще книжки читать на самом деле. На самом же ресурсе здесь часто есть дополнительные статьи на все темы. Или на другом ресурсе. Прям книги книги на таком этапе в общем-то и не так уж надо читать параллельно. То есть надо, если хотите сразу идти степенно и глубоко настолько насколько можно, а если быстрее, то легче самому пробовать, играться, так сказать. Надо было вывести стектрейс в консоль в IDE, или тут в браузере это сделать. Посомтреть, что такое стектрейс, взятый таким методом, как там написано, и что можно с этим сделать. Не всегда должно быть легко и просто все. Это создает иллюзию, что ты все знаешь и все получается, а это не так. Надо часто самому тыкать и смотреть высматривать, что такое где. Команда System.out.println() должна быть вызвана всегда в процессе решения если что-то непонятно и вообще помотреть что происходит. Или отладкой пользоваться смотреть. Ну в самом деле. Ничего сверхсложного, просто не все гладенько))
АртемРаботает в IT Universe
1 февраля 2022, 14:53
Как я понял - getStackTrace() - это массив, который является стеком, т.е. каждый элемент в нем - это тот метод который идет в иерархии вызовов (пример для метода method1()): getStackTrace()[2].getMethodName() - это main; getStackTrace()[1].getMethodName() - это method1; getStackTrace()[0].getMethodName() - это getStackTrace; getStackTrace()[3].getMethodName() - выше main ничего нет, поэтому получите ArrayIndexOutOfBoundsException, массив то из 3 элементов. Для методе method2() будет такой: getStackTrace method5 method4 method3 method2 method1 main Итого getStackTrace()[2].getMethodName() - потому что именно в третьем элементе лежит вызвавший текущий метод метод. Во втором - текущий метод, в первом - метод getStackTrace.
Valkery
Уровень 1
12 февраля 2022, 09:25
Насчет надо гуглить - двоякое мнение, знаете, я покупаю книгу, чтобы по ней изучать информацию, зачем тогда гуглить, если есть хорошая книга. JR позиционирует себя как хороший сервис для будущего разраба, так я купила его(для получения знаний), почему не навалить здесь же информации и не выдавать ее студентам
FuryCydonian
Уровень 22
14 февраля 2022, 16:58
Двоякое-то двоякое, да только в жизни так не бывает, наверное, что в одном месте все так идеально собрано и всем подходит. Тут есть куча статей, да. Можно их тут же и искать, но они точно также ищутся и через гугл (статьи с джавараш). И в конце уровней даются доп лекции. Но все равно всегда и все люди говорят умные, что надо несколько источников обрабатывать. Почему еще что-то покупать или брать? Потому. Потому что инфа представляется разными словами и разными людьми и кому что больше зайдет - не угадаешь. Здесь тоже ссылок полно разных полезных дают, но как бы при это и урок есть с рекомендациями хороших книг и наставлениями не оставаться только на JR. А умение гуглить это, как шутят, вообще главное умение. Это просто нужно уметь делать, и чем раньше привыкнуть - тем лучше. Бубнеть, что зачем еще что-то, я же то-то купил и то-то купил - толку не принесет, к сожалению. Вообще единственное место, где как раз все навалено и все есть, надо только поискать - это как раз таки интернет. Вот в нем все навалено. Именно навалено. Здесь стараются и давать что-то, чтоб вроде понятно было, но и не заваливать прям. Но источники другие хорошие здесь тоже навалены, как вы говорите, и все - идите смотрите там, если там понятнее, дополнительно - не проблема. Разные люди - разные способы объяснения нужны всем) Почитать что-то другими словами или посмотреть - это лучшее усвоение материала, так что вредным все равно не будет. А самое лучшее и полное руководство, где все есть, но читать его как книжку или курс тяжеловато и скучно, это оф руководство, конечно. Там есть все. Но учиться по нему сложновато)
Артем
Уровень 13
1 марта 2022, 10:10
наверное правильнее сказать getStackTrace() это метод, который возвращает массив объектов, у которых есть методы...
Zhulien
Уровень 16
14 июня 2022, 20:05
работа программиста а 80% состоит из правильного ввода запроса в гугл))) привыкайте
Кирилл
Уровень 2
1 декабря 2022, 14:26
У них на сайте (помимо курса) овердох.. крутейших и понятных статей. При этом они понимают, что лучшие знания и навыки нарабатываются на практике, а запоминается лишь то, что пощелкал, попробовал, где упёрся, где пришлось поискать, подумать. Остальное - вылетает ко всем чертям. Важнейший навык, который вырабатывет подход JR - навык самостоятельного обучения. Обычно он должен вырабатываться в универе, но не у всех вырабатывается. И вот тут как раз JR отлично работает. И опять таки, работая в индустрии придется производить собственные смыслы, собственные реализации, основываясь на том, что нашел и собрал по крупицам в интернете. не для каждой практической задачи найдется подробная технологическая карта. Нет как бы в программировании такого, что уже всё создано до нас, а нам надо только все выучить и повторять в нужном порядке. Иначе у прогеров не было бы таких хороших зарплат. И вот чтобы научиться не теряться в океане, в который попадаешь, став разрабом, JR и использует именно эти модели в подходе к обучению.
9 декабря 2022, 03:28
Ты просто себе представить не можешь что будет дальше .