Как мне уже говорили более опытные ребята: "не называй что-либо траблом, пока точно не удостоверился в этом, может это так задумано". Так вот вопрос, в 4 лекции второго уровня Java Syntax Pro ошибка синтасиса или нет? Прикладываю линк лекции и скрин. https://javarush.com/quests/lectures/questsyntaxpro.level06.lecture02
Насколько мне известно, Нельзя ставить точку с запятой после условия цикла for, я сам буквально вчера столкнулся с такой же проблемой, но , к моему удивлению, javac(1) не выдал ошибку. Он никак не отреагировал ни на что, кроме ctrl+c как при infinity loop. Jdb тупо выбрасывало, когда я доходил до строчки с точкой запятой после условия цикла for. Почему так происходит, почему компилятор jdk просто не выдаст syntax error, как gcc или clang для си, например.
Anonymous #2494482
6 уровень
Фича или ошибка?
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
26 декабря 2020, 12:14
в каждом монастыре свой устав. Почему это не является синтаксической ошибкой это вопрос архитектуры и дизайна языка. Например в джаве можно много чего работоспособного сделать с помощью этой конструкции:
этот код запишет в файл:
При том что это просто условие for ( ) и точка с запятой после цикла сразу.
Так писать можно, но не нужно конечно, но такое валидно с точки зрения компилятора.
+3
Zelimkhan
27 декабря 2020, 05:33
Интересный пример, конечно. Будь опрос , точно не сказал бы что выведится "1,2,3,4,5"
+1
VladimirMaster
26 декабря 2020, 04:02
Ошибки тут нет. Точка с запятой выключает цикл, по этой причине рекомендуется ставить фигурные скобки после цикла, иначе может быть результат разный.
Ради спортивного интереса, давай проверим.
Вот пример с выключенным циклом.
Проверяем:
Тест зеленый, все верно.
Теперь включаем цикл:
Проверяем:
И видим, что тест упал:
Ожидается совсем другой результат, так, как тут отрабатывает уже цикл.
Если не понятно что-то, пиши. 0
Сергеев ВикторMaster
26 декабря 2020, 01:05
для компилятора это цикл без тела, ошибки компиляции тут нет, но есть логическая.
+1