Сначала определим результат вывода:

Итак, как мы можем этого добиться?

1. Сначала проанализируем структуру изображения

Мы видим, что изображение состоит из 5 строк. Итак, можем ли мы создать оператор цикла for, чтобы задать 5 строк? Ответ — да.

for(int i = 1 ;i <= 5 ;i++ ){

}

Таким образом, мы создали блок кода цикла for, который выполняется 5 раз и является самым внешним циклом.

2. Затем проанализируем, из чего состоит изображение. Мы можем разделить изображение на следующие части: /p>

Мы можем разделить изображение на эти три треугольника.

3. Создайте треугольник № 1 — пустой треугольник

Как видите, первая строка выводит 4 пробела, вторая строка выводит 3 пробела, третья строка выводит 2, четвертая строка выводит 1, а в пятой строке их нет.

Из этой закономерности видно, что их количество последовательно уменьшается. Итак, как нам это реализовать?

Можно представить, что от 1 до 5 между ними находятся четыре числа; от 2 до 5 — 3 числа; от 3 до 5...

Можно ли применить этот принцип? Конечно, ответ — да. Так как же это реализовать? Взгляните на код:

for(int i = 1;i<=5 ;i++) {
    for(int j = 5; j >= i ; j--)//建立1号图形
        System.out.print(" ");
    System.out.println();
}

Первый оператор for — это только что определённый оператор цикла с пятью итерациями.

Теперь проанализируем второй цикл for:

Сначала определим переменную int j и присвоим ей значение 5.

Затем подумаем: поскольку мы хотим сократить расстояние, j уменьшается на 1 при каждой итерации цикла, что как раз соответствует нашему требованию:

В первом внешнем цикле i=1, j=5, поэтому выполняется условие j>=i, затем выводится пробел, затем j-1, теперь j равно 4, условие j>=i выполняется, и выводится ещё раз.

……

Когда j=0, условие j>=i не выполняется, и происходит выход из внутреннего цикла.

Теперь управление доходит до System.out.println(); и переходит на новую строку.

Теперь возвращаемся к внешнему циклу, i++, i становится 2, условие i<=5 выполняется, и происходит вход во внутренний цикл.

Устанавливаем j=5, условие j>=i выполняется, выводим пробел, j-1.

Теперь j равно 4, условие j>=i выполняется, выводим пробел, j-1.

……

Когда j=1, условие j>=i становится неверным, выходим из внутреннего цикла, затем переходим на новую строку.

Затем i+1, и затем снова входим во внутренний цикл...

И так далее, образуется перевёрнутый треугольник из четырёх строк, и создаётся шаблон № 1.

4. Создайте шаблон № 2. Принцип точно такой же, как у шаблона № 1, но только наоборот.

for(int i = 1 ;i<=5 ;i++){
    for(int j = 5; j >= i ; j--)//建立1号图形
        System.out.print(" ");
    for(int j = 1; j <= i; j++)//建立2号图形
        System.out.print("*");
    System.out.println();
}

Это то же самое, что и создание шаблона № 1; вы можете понять это сами. Таким образом создаётся шаблон № 2.

5. Создайте шаблон № 3

for(int i = 1; i <= 5; i++){
    for(int j = 5 ;i <= j; j--)//建立1号图形
        System.out.print(" ");
    for(int j = 1; j <= i; j++)//建立2号图形
        System.out.print("*");
    for(int j = 1; j < i; j ++)//建立3号图形
        System.out.print("*");

}

Аналогично, как и для шаблонов № 1 и № 2, принцип создания шаблона № 3 тот же.

Но обратите внимание на одну вещь: шаблон № 3 не выводится в первой строке, поэтому нам нужно отсечь его в первом внешнем цикле и позволить ему выводиться во втором внешнем цикле.

Следовательно, на этот раз условие — j < i, без равенства.

Полный исходный код:

class Demo{ public static void main(String[] args){ for(int i=1;i<=5;i++){ for(int j=5; i<=j; j--) System.out.print(" "); for(int j=1; j<=i; j++) System.out.print("*"); for(int j=1; j<i; j++) System.out.print("*"); System.out.println(); } } }

Электронная почта автора: [email protected]