Как насчет этого?
for (int row = 1; row <= 10; row++) {
for (int j = 1; j <= row; j++) {
System.out.print(j + " ");
}
System.out.print(" ");
for (int j = 10; j >= row; j--) {
System.out.print(j + " ");
}
System.out.println();
}
Вывод:
1 10 9 8 7 6 5 4 3 2 1
1 2 10 9 8 7 6 5 4 3 2
1 2 3 10 9 8 7 6 5 4 3
1 2 3 4 10 9 8 7 6 5 4
1 2 3 4 5 10 9 8 7 6 5
1 2 3 4 5 6 10 9 8 7 6
1 2 3 4 5 6 7 10 9 8 7
1 2 3 4 5 6 7 8 10 9 8
1 2 3 4 5 6 7 8 9 10 9
1 2 3 4 5 6 7 8 9 10 10
Объяснение - внешний цикл перебирает строки, поэтому я переименовал i
в row
для ясности.Первый внутренний цикл не отличается от вашего кода - он отвечает за печать чисел до диагонали.Затем мы печатаем двойной пробел (System.out.print(" ")
), а второй цикл печатает оставшиеся числа, начиная с 10 и заканчивая номером строки.
В другой заметке лучше отформатировать код,Отступы действительно помогают с удобочитаемостью и пониманием.
Например, ваш первый цикл выглядит так:
for(int i = 1; i<=10; i++ ) {
for(int j = 1; j <= i; j++) {
System.out.print(j);
}
System.out.println();
}
Но должен выглядеть так:
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j);
}
System.out.println();
}
Этотот же код, но в отформатированной версии гораздо легче увидеть, что второй оператор System.out.println
следует за внутренним for
и что заключительная закрывающая скобка закрывает внешний цикл for
, а не что-то еще.