println
ничего не меняет; он «заканчивает строку» и означает, что любые операторы print, выполненные позже, начнутся с новой строки.
Итак, внешний l oop будет печатать одну звездочку при каждом вызове, а затем делать все, что угодно внутренний l oop делает, затем печатает новую строку. Другими словами, каждый 'внешний l oop' получает свою собственную линию, а каждый внешний l oop означает, что вы получаете как минимум 1 звезду.
Тогда внутренний l oop печатает звезды X-1 где X - значение массива [i]. Учитывая, что внешний l oop всегда печатает звезду, это означает, что каждая строка - это звезды, равные массиву [i], с дополнительным предупреждением, что по крайней мере 1 звезда печатается, даже если массив [i] равен 0 или отрицателен.
И это все.
Итак, ваш массив здесь должен иметь длину 5, а его значения:
int[] array = {5, 1, 3, 4, 2}; // the 1 could be 0 or negative too for the same result.