package com.javarush.task.task27.task2702;
/*
Нужный оператор
*/
public class Solution {
public static void main(String args[]) {
label: //метка
for (int i = 0; i < 10; i++) { //1)заходим во внешний цикл
for (int j = 0; j < 10; j++) { //2)заходим во внутренний цикл
if (j > i) { //первая итерация i==0 & j==0, переходим к Sout
System.out.println();
continue label;
}
System.out.print("S"); //3)пишем первую s. j==1, первая итерация внутреннего цикла кончилась, увеличили j на 1
/*4) новая итерация во внутреннем цикле, 1>0, переходим на новую строку (println()) и возвращаемся на метку(continue=новая итерация), в этом моменте
мы получается заходим во внешний цикл (Sout("s")) не должно отработать, так как continue label=new itteration ?!
i==0(заново присваивается 0 ?) . Что то я поломался на легкой задаче (
Люди добрые, подскажите как отрабатывает код, Всех люблю ) /*
}
}
}
}
nescafe
30 уровень
подскажите как отрабатывает код . я сломался
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел Безумный учёный Expert
17 сентября 2021, 21:30
Представленный Вами код эквивалентен следующему:
Переход к метке label означает завершение внутреннего цикла и продолжение работы внешнего. Значение переменной i при этом не сбрасывается в 0, а происходит очередное его увеличение на 1, то есть следующая итерация внешнего цикла. Затем запускается внутренний цикл, который отрабатывает несколько своих итераций, пока j <= i. Наконец, снова происходит переход к метке label и процесс повторяется. +1
nescafe
18 сентября 2021, 09:54
continue label ;в моем коде - переход во внешний цикл
при каждой новой итерации внешнего цикла - j=0 (если бы j сохранялся, то вывод был бы не треугольником, а только
s
s
s
Верно ?
0
Павел Безумный учёный Expert
18 сентября 2021, 10:27полезный
Совершенно верно. j - это локальная переменная, доступная только внутри своего цикла. Она перестаёт существовать при выходе из тела внутреннего цикла.
+1
nescafe
18 сентября 2021, 10:43
спасибо за наводку ))
0