Java 将阵列转换为二维阵列

Java 将阵列转换为二维阵列,java,arrays,sorting,Java,Arrays,Sorting,如何将数组[1,2,3,4,5,6,7,8,9,10,11,12]转换为如下所示的二维数组 [[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];

如何将数组
[1,2,3,4,5,6,7,8,9,10,11,12]
转换为如下所示的二维数组

[[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];
    }
for(int i=0;i
这将对您有效:

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

在这里,我们根据
i*3+k
计算源索引数组,以继续获得下一个索引值。

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

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
仅可从Java6获得。
否则,您必须使用
System.arrayCopy
,它返回
void
(不适用于现有示例)。

arr1-带输入编号的数组

for(int i=0;i<arr1.length;i++)
for(int j=0;j<3;j++)
arr2[i][j]=arr1[i*3+j];
arr2-具有输出编号的数组

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

用于(int i=0;i到目前为止投入了多少努力?提示:使用两个嵌套循环。这不是唯一的解决方案-了解更多。Sry我已经编辑了这个问题。提示2:思考循环的每次迭代i和j的值是什么。因此,这不是学习编程基础知识的合适资源。你最好与老师谈谈或阅读一本书。