Ваш код почти отсутствует, за исключением того, что у вас есть обратные строки. Легкое исправление заключается в том, чтобы отменить индекс строки при назначении значения, то есть изменить A[i][j]
на A[9-i][j]
.
Это поможет вам правильный результат, однако:
Если вы исследуете код, который вы увидите, вы 9 - i
в двух местах, так что, возможно i
должен быть обратным отсчетом.
Вы можете рассмотреть advice of Extragorey, чтобы назвать ваши переменные row
и col
, чтобы уточнить их смысл.
Переменные обычно должны быть объявлены там, где они впервые используются. Вы не показывали свои объявления, поэтому я добавил их ниже.
a = a + 1
лучше писать как a++
, и его можно сделать встроенным с назначением A
.
С j
с подсчетом, отметка j>=0
должна быть просто добавлена в состояние цикла.
Вы можете объявить и инициализировать более чем одну переменную в секции инициализации for-loop, если они имеют тот же тип, что и a
и i
.
Вот таким образом, уточненный код:
int[][] A = new int[10][10];
for (int row = 9, a = 1; row >= 0; row--)
for (int col = row; col >= row - 3 && col >= 0; col--)
A[row][col] = a++;
for (int[] r : A) {
for (int v : r)
System.out.printf("%-4d", v);
System.out.println();
}
Выход
34 0 0 0 0 0 0 0 0 0
33 32 0 0 0 0 0 0 0 0
31 30 29 0 0 0 0 0 0 0
28 27 26 25 0 0 0 0 0 0
0 24 23 22 21 0 0 0 0 0
0 0 20 19 18 17 0 0 0 0
0 0 0 16 15 14 13 0 0 0
0 0 0 0 12 11 10 9 0 0
0 0 0 0 0 8 7 6 5 0
0 0 0 0 0 0 4 3 2 1
Добро пожаловать в StackOverflow. Во-первых, вы можете улучшить свой * вопрос *, удалив ссылки, а вместо этого скопируйте/вставьте выходные ** текст ** в вопрос, чтобы мы могли читать/копировать, сравнивать текст, на который вы ссылаетесь, очень сложно сделать с изображениями (следовательно, обычно вниз). Благодаря! – davedwards
Просьба представить весь исходный код, который вы пытались реализовать, чтобы лучше понять вашу проблему. Никто не украдет ваш код. –