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的值是什么。因此,这不是学习编程基础知识的合适资源。你最好与老师谈谈或阅读一本书。