将数组转换为2d数组

时间:2014-05-21 12:23:05

标签: java arrays sorting

如何将数组[1, 2, 3, 4, 5, 6, 7 ,8, 9, 10, 11, 12]转换为2D-Array,如下所示?

[[1,  2,  3],
 [4,  5,  6],
 [7,  8,  9],
 [10, 11, 12]]

连续3个数字。

我所尝试的方法返回第一行正确,但其他行与第一行相同。

for (int i = 0; i < array.length; ++i) {
    for (int k = 0; k < 3; ++k) {
    result[k][i] = args[i];
    }

3 个答案:

答案 0 :(得分:1)

这对你有用:

for (int i = 0; i < array.length/3; ++i) {
  for (int k = 0; k < 3; ++k) {
    result[i][k] = args[i*3+k];
  }
}

这里我们基于i*3+k计算源索引数组,以继续获取下一个索引值。

答案 1 :(得分:0)

一行且可解读的解决方案是:

int[] foo = {1, 2, 3, 4, 5, 6, 7 ,8, 9, 10, 11, 12};
System.out.println(
    Arrays.deepToString(
        new int[][]
            {
                Arrays.copyOfRange(foo, 0, 3),
                Arrays.copyOfRange(foo, 3, 6),
                Arrays.copyOfRange(foo, 6, 9),
                Arrays.copyOfRange(foo, 9, 12)
            }
        )
);

<强>输出

[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

注意

方法Arrays.copyOfRange仅适用于Java 6。 否则,您必须使用返回System.arrayCopy的{​​{1}}(不适用于示例)。

答案 2 :(得分:0)

arr1 - 输入数字

的数组

arr2 - 输出数字

的数组
for(int i=0;i<arr1.length;i++)
for(int j=0;j<3;j++)
arr2[i][j]=arr1[i*3+j];