为什么矩阵函数中要用到模和除法?

Why is the modulo and division used in the matrix function?

 Actor[][] toMatrix(Actor[] arr) {
    int size = (int) round(sqrt(arr.length));
    Actor[][] matrix = new Actor[size][size];
    for (int i = 0; i < arr.length; i++) {
       *** matrix[i / size][i % size] = arr[i]; ***
    }
    return matrix;
}

我无法理解该特定代码行的作用。

让我们在这里尝试一个例子:

String[] test = {"John Doe","Actor","Jane Doe","Actress"};

int size = (int) Math.round(Math.sqrt(arr.length)); -> 2

所以我们正在创建一个 [2][2] 数组。

遍历 arr (=4) 的大小:

0 -> [0/2 -> 0][0%2 -> 0] = arr[0]
1 -> [1/2 -> 0][1%2 -> 1] = arr[1]
2 -> [2/2 -> 1][2%2 -> 0] = arr[2]
3 -> [3/2 -> 1][3%2 -> 1] = arr[3] 

所以除法的其余部分用于确定数组第二维中的索引。

输出将如下所示:

[[John Doe, Actor], [Jane Doe, Actress]]