为什么矩阵函数中使用的模数和除法?

时间:2018-01-08 16:48:13

标签: java sorting matrix modulo divide

 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;
}

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

1 个答案:

答案 0 :(得分:1)

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

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]]