[英]Convert 1d array to 2d array in JAVA
我试图在Java中将1d数组中的值输入2d数组中。
这是我到目前为止的内容:
int[] input2 = {
0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0
};
int[][] arr = new arr[3][4];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println("index" + ((i * arr.length) + j));
arr[i][j] = input2[(i * arr.length) + j];
//System.out.print(" " + arr[i][j]);
}
//System.out.println();
}
但是它输出的是:
index0
index1
index2
index3
index3
index4
index5
index6
index6
index7
index8
index9
这意味着我从一维数组中弄错了索引。 我哪里做错了 ?
您的错误是,在每一步中,您乘以行数而不是列数 。
如果要转到第二行的第一个元素,则必须先跳过第一行的所有元素。 那将是1 * arr[0].length
。 因此,您的方法可能适用于X by X数组,但不适用于X by Y数组。
它很可能是二维填充的,但是(((i * arr.length)+ j)可能只是在添加值。 我将在其中间添加“ +”,“”以查看实际获得的输出。
在您的循环中尝试-
((i*arr[0].length) + j)
您应该将索引公式从更改为:
(i*arr.length) + j
至
(i*arr[i].length) + j
您可以尝试以下方法:
int count = 0;
for(int i=0; i< arr.length; i++)
{
for(int j=0; j<arr[i].length; j++)
{
//System.out.println("index" + ((i*arr.length) + j) );
arr[i][j] = input2[count++];
System.out.print(" " + arr[i][j]);
}
System.out.println();
}
尝试
int[] input2 = {0,1,0,0,0,1,1,0,1,0,1,0};
int[][] arr = new arr[3][4];
for(int i=0; i< arr.length; i++)
{
for(int j=0; j<arr[i].length; j++)
{
System.out.println("index" + ((i*arr[i].length) + j) );
arr[i][j] = input2[(i*(arr[i].length)) + j];
//System.out.print(" " + arr[i][j]);
}
//System.out.println();
}
(用((i*arr[i].length) + j)
替换了((i*arr.length) + j)
((i*arr[i].length) + j)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.