Если правильно понимаю, исходя из условия для первого цикла, цикл начинает работу, далее по порядку начинает работать второй цикл условия соблюдаются и он выводит 8, после чего увеличивает число b на 1 и заканчивает работу, так как условие не соблюдается. Далее первый цикл ставит знак со следующей строки, увеличивает на 1 число a и начинает с начала проверять условие, потом условие верно, по порядку цикл 2, условие верно, в нашем случае должно быть b=1, b<a(которая равна 2), и цикл должен работать 1 раз. Почему он работает не так, ведь первый цикл не обнуляет значение -а-, а сохраняет его, а второй обнуляет значение -b-.
Даниил
26 уровень
Как это работает
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
31 марта 2019, 13:54
Ты описал все правильно.
Пока ты находишься внутри цикла, переменная, которую ты объявил, существует. Для первого цикла - это переменная а, для второго - б. В момент, когда условие не выполняется, происходит выход из цикла, и переменная далее не существует. То есть переменная объявляется в заголовке цикла: int b = 0 и существует только пока выполняется цикл - нельзя обратиться к переменной b вне вложенного цикла. А выход из внешнего цикла происходит только в самом конце, когда а становится больше 10 - до этого она хранит свое значение, с каждой итерацией увеличивая его на 1.
Надеюсь, понятно выразился
0
Даниил
2 апреля 2019, 14:04
То есть переменная б обнуляется при нарушение условия цикла(который внутренний). и Каждый раз когда до него доходит дело, это как новый пустой цикл?
0
hidden #598481
2 апреля 2019, 14:16
>это как новый пустой цикл?
непонятно, что означает "пустой", но это новый цикл, да.
Она (переменная б) обнуляется не при выходе из цикла, а при следующем входе в цикл, потому что у тебя объявлено
В Java жизненный цикл любой локальной переменной ограничен блоком из фигурных скобок, в которых она находится. Для цикла for это работает так:
В последствии ее уничтожит механизм под названием сборщик мусора. Когда ты снова выполнишь команду for (int i = 0; i < limit; i++), ты создашь новую переменную i (в твоем случае b, равную нулю).
Если у цикла или блока if-else нет фигурных скобок, это значит, что "мнимые" фигурные скобки включают только одну команду
0
Vasily
31 марта 2019, 10:51
В условии задачи даны параметры прямоугольника 10 на 10. Добавь пробел так чтобы у тебя получился треугольник из 8рок в прямоугольнике
-4