Имхо, недостаток таких задач в том, что если знать о существовании такой задачи, то все тривиально.
Ну и я не очень понимаю их смысла, IDE для того и нужен, чтобы все красиво и понятно раскрасить, а не заставлять
программиста делать лексический анализ в голове.
Наличие IDE не отменяет необходимости думать.
Периодически сталкиваюсь на работе с фундаментальным непониманием того, что происходит если отойти чуть в сторону от базового кодинга, начиная от неверной работы с вложенными классами (ой, IDE подсветила, что класс подобным образом использовать нельзя и предлагает сделать его static — ну статик, так статик...), заканчивая не знанием библиотек.
Задачи включают голову, показывают, что ты чего-то можешь не знать и мотивируют заняться изучением, как минимум того аспекта, который описан в задаче (например, классический «i++ + ++i» поселяет в голове много мыслей, если вопрос инкрементации ранее не был изучен).
Не отменяет :) но облегчает жизнь. В частности для вышеприведенной задачки.
Я не вижу особого смысла в задачках на лексический анализ(читай буквоедство), когда соль задачки в том, что «не скомпилируется, потому что вот тут забыли ';' поставить».
Классический i+++++i тоже не всегда полезен, потому как такого кода не должно быть, независимо от того понимает написавший тонкости работы или нет — читать это очень сложно.
Это примерно как проверка орфографии сложных слов. Оно конечно коррелирует с кругозором и умением излагать свои мысли, но это не строгая зависимость.
Джентльмены, однозначного ответа дать нельзя, так как в условии задачи не указано имя модуля компиляции. К примеру, если данный код размещён в файле BlaBlaBla.java, а не HelloWorld.java, то скомпилировать его не удастся в любом случае.
Задача по Java Core