Давайте сначала разберемся Для цикла:
Для цикла:
Он структурирован вокруг конечного набора повторений кода.
Так что если у вас есть определенный блок кода, который вы хотите
бегали снова и снова определенное количество раз
Для петли полезно.
Синтаксис:
for(initilization; conditional expression; increment expression)
{
//repetition code here
}
Например:
int x = 7;
for (int i = 1; i <= x; i++){
// statements
}
В этом "int i = 1" является частью инициализации, цикл будет повторяться
пока условие не выполнится, то есть (I <= x) замените значение I и x (1 <= 7). </p>
После того, как этот оператор внутри тела цикла будет выполнен, и в конце «i ++», то есть значение «I», будет увеличено (я стану 2).
Этот процесс будет повторяться каждый раз, пока условие (I <= x) не станет истинным. </p>
Теперь давайте разберемся, как образуются формы:
ROW (1) * --> COLUMN
| (2) **
| (3) ***
| (4) *****
v (5) *******
Как мы видим, есть две вещи, которые нужно учитывать, во-первых, количество строк и, во-вторых, количество столбцов:
Мы используем два цикла для построения таких структур: первый внешний цикл для числа строк и второй внутренний цикл для числа столбцов.
ЛОГИКА КОДА: Сначала разделите пирамиду на 3 треугольника.
####$
###$$@
##$$$@@
#$$$$@@@
$$$$$@@@@
1> Первый треугольник (пробелы, представленные #)
####
###
##
#
2> Второй треугольник (представлен $)
$
$$
$$$
$$$$
$$$$$
3> Третий треугольник (обозначен @)
#
@
@@
@@@
@@@@
Вместе он создаст структуру пирамиды
Давайте начнем :
Теперь давайте разберем нашу проблему с шаблоном:
######1
#####212
####32123
###4321234
##543212345
#65432123456
7654321234567
Мы разобьем это на 3 треугольника, и каждый треугольник будет иметь свой собственный цикл внутри основного цикла для количества строк.
Как мы видим, количество строк, необходимых для нашего шаблона, равно 7, поэтому мы будем повторять первый цикл до достижения 7 строк.
основной цикл (для строк):
int x = 7;
for (int i = 1; i <= x; i++) { // main loop for number of rows
// other 3 loops will come insidethe mail loop
}
Первый внутренний цикл:
Как мы видели в логике паттернов, первый треугольник
состоят из пробелов или пробелов.
output eg: (representing white spaces with #)
######
#####
####
###
##
#
for (int j = 1; j <= x - i; j++) // j represent a column number
System.out.print(" ");
// This will create blank spaces till the condition is true.
**condition explained:** j <= x - i
Значение «i» равно «1», так как это первый раз, когда работает основной цикл
и с тех пор значение «я» не изменилось.
**replace values:**
при j = 1: 1 <= 7-1 (будет напечатано) ###### </strong>
// первая итерация основного цикла и внутреннего цикла.
после того, как этот элемент управления перейдет к следующему циклу, то есть ко второму внутреннему циклу:
j = 2: 2 <= 7-1 (будет напечатано) ##### </strong>
// на второй итерации основного цикла и внутреннего цикла.
после того, как этот элемент управления перейдет к следующему циклу, то есть ко второму внутреннему циклу:
j = 3: 3 <= 7-1 (будет напечатано) #### </strong>
// на третьей итерации основного цикла и внутреннего цикла.
после того, как этот элемент управления перейдет к следующему циклу, то есть ко второму внутреннему циклу:
j = 4: 4 <= 7-1 (будет напечатано) ### </strong>
// на четвертой итерации основного цикла и внутреннего цикла.
после того, как этот элемент управления перейдет к следующему циклу, то есть ко второму внутреннему циклу:
j = 5: 5 <= 7-1 (будет напечатано) ## </strong>
// на пятой итерации основного цикла и внутреннего цикла.
после того, как этот элемент управления перейдет к следующему циклу, то есть ко второму внутреннему циклу:
j = 6: 6 <= 7-1 (будет напечатано) # </strong>
// на шестой итерации основного и внутреннего цикла.
после того, как этот элемент управления перейдет к следующему циклу, то есть ко второму внутреннему циклу:
j = 7: 7 <= 7-1 // конец первого внутреннего цикла, поскольку (7 <= 6 неверно) </p>
Второй внутренний цикл:
for (int k = i; k >= 1; k--) //second triangle
System.out.print((k >= 10) ?+ k : " " + k); // ternary operator is used to check the printing logic
Примечание:
ternary operator syntax: result = testCondition ? value1 : value2
// если условие проверки истинно, то результат получит значение1, иначе значение 2
***DIY: (Take a paper pen)***
Implement for loop logic and replace variables with values:
Первая итерация: K = i (мы знаем i = 1), поэтому k = 1; k> = 1 (Заменяя переменные, мы получаем 1> = 1, что верно); выполнить операторы.
Заявление: System.out.print((k >= 10) ?+ k : " " + k);
или если (1> = 10)?затем выведите значение «k» (то есть 1)
иначе выведите значение «k» с пробелами впереди k (чтобы пирамида выглядела даже на расстоянии)
ПРИМЕЧАНИЕ: если вы запутались с троичным оператором, не используйте его, вы можете просто записать.
System.out.print(" " + k); // will give same output
после того, как этот элемент управления перейдет к следующему циклу, т.е.:
*Second innerloop is used to print this portion:*
1
21
321
4321
54321
654321
7654321
Третий внутренний цикл: Этот цикл используется для печати третьего треугольника.
2
23
234
2345
23456
234567
for (int k = 2; k <=i; k++) // loop column
System.out.print((k >= 10) ?+ k : " " + k);
or
System.out.print(" " + k)
позволяет увидеть полный код:
int x = 7;
for (int i = 1; i <= x; i++) { // loop row
for (int j = 1; j <= x - i; j++) // loop column (Triangle one)
System.out.print(" ");
for (int k = i; k >= 1; k--) // loop column (Triangle two)
System.out.print( " " + k);
for (int k = 2; k <=i; k++) // loop column (Triangle three)
System.out.print( " " + k);
System.out.println(); // used to go on new line (new row)
}