Это домашняя работа, которую мы получили на моем уроке информатики, посвященном 2D-массивам.Я пытался понять код, но, к сожалению, мне трудно понять код.Вот код, который нам предоставили:
public class Magic {
public static void main(String[] args) {
// Initializing a variable named n and assigning the integer 3 to it
int n = 3;
// Initializing a multi-dimensional array with 3 rows and 3 columns max
int m[][] = new int[n][n]; // 3 by 3
int i, j;
// Assigning 1 to variable num
int num = 1;
int nn = n * 3 / 2; //4
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
m[(j - i + nn) % n][(i * 2 - j + n) % n] = num++;
System.out.println(num);
} // next j
} //next i
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
System.out.print(m[i][j] + "\t");
} // next j
System.out.println();
} //next i
} //end main()
} //end class Magic
Теперь моя проблема в том, что я не понимаю этот фрагмент кода специально:
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
m[(j - i + nn) % n][(i * 2 - j + n) % n] = num++;
}
}
Что означает эта строка кодаделать в цикле?Я не уверен, почему модуль также используется в этой строке.Есть ли ограничение диапазона генерируемых чисел?
m[(j - i + nn) % n][(i * 2 - j + n) % n] = num++;