Как этот цикл For печатается таким образом?

#java

#java

Вопрос:

Я изучаю кодирование, и сегодня я попробовал эту программу

 for (cnt = 1; cnt <= 6; cnt  ) {
    for (int j = cnt; j <= 6; j  ) {
        System.out.print("*");
    }
    System.out.println();
}
  

и я не понимаю, как он печатает обратную пирамиду

 ******
*****
****
***
**
*
  

Не могли бы вы мне объяснить, пожалуйста?

Комментарии:

1. j инициализируется значением cnt . Каждый раз cnt увеличивается, это означает, что j инициализируется более высоким значением, поэтому для достижения требуется меньше итераций 6 .

Ответ №1:

Когда cnt = 1

 j = 1 => Print * => The line becomes *
j = 2 => Print * => The line becomes **
j = 3 => Print * => The line becomes ***
j = 4 => Print * => The line becomes ****
j = 5 => Print * => The line becomes *****
j = 6 => Print * => The line becomes ******
After this line breaks
  

Когда cnt = 2

 j = 2 => Print * => The line becomes *
j = 3 => Print * => The line becomes **
j = 4 => Print * => The line becomes ***
j = 5 => Print * => The line becomes ****
j = 6 => Print * => The line becomes *****
After this line breaks
  

Таким образом, после двух итераций cnt вы получаете следующий шаблон:

 ******
*****
  

Таким образом, итерации cnt будут увеличиваться 6 , и вы получите шаблон обратной пирамиды

Ответ №2:

Ваш внешний цикл создает строки. Внутренний цикл печатает символы j-cnt *. Поскольку cnt увеличивается с каждой печатаемой строкой, j-cnt уменьшается с каждой итерацией внешнего цикла. Таким образом, с каждой строкой он печатает все меньше и меньше символов.

Ответ №3:

На первой итерации внешнего цикла cnt значение равно 1 , j во внутреннем цикле присваивается значение cnt , которое равно 1 , поэтому внутренний цикл будет повторяться от 1 6 включительно, это шесть звезд.

На второй итерации внешнего цикла cnt значение равно 2 , j во внутреннем цикле присваивается значение cnt , которое равно 2 , поэтому внутренний цикл будет повторяться от 2 6 включительно, это пять звезд.

На третьей итерации внешнего цикла cnt значение равно 3 , j во внутреннем цикле присваивается значение cnt , которое равно 3 , поэтому внутренний цикл будет повторяться от 3 6 включительно, это четыре звезды.

На шестой итерации внешнего цикла cnt значение равно 6 , j во внутреннем цикле присваивается значение cnt , которое равно 6 , поэтому внутренний цикл будет повторяться от 6 до 6 включительно, это одна звезда.

Ответ №4:

Это потому int j = cnt , что where cnt увеличивается, поэтому второй цикл будет повторяться меньше по мере cnt увеличения. Подумайте об этом
, когда cnt = 1 второй цикл будет печатать 6 раз
, когда cnt = 2 второй цикл будет печатать на один раз меньше, чем раньше. И так далее. Итак, это то, что он собирается печатать:

 ******
*****
****
***
**
*
  

количество * уменьшений на единицу в каждой строке.