我有一个16个整数(0-15)的数组,我想转换为4乘4维数组。我该怎么做?
到目前为止:
int [] array = new int[15]
int[][] array2 = new int[4][4]
for (int i=0; i<array.length; i++)
for (int j=0;j<array2.length;j++)
我不知道该怎么做其余的
答案 0 :(得分:0)
首先,您的原始代码中存在错误:array
应该有16个元素,而不是15个。此外,循环的结束条件不正确。然后添加
array2[i][j] = array[i*4 + j];
或者,取决于您是否需要行主要或列主要顺序:
array2[i][j] = array[j*4 + i];
或更一般地说:
array2[i][j] = array[(i * width) + j];
答案 1 :(得分:0)
你要做的就是首先初始化一个变量k = 0; 然后应用以下循环
for(int i=0;i<4;i++)
for(int j=0;j<4;j++){
array2[i][j]=array[k++];
}
此处4可以替换为第一个循环中的总行数和第二个循环中用于生成通用代码的总列数。
答案 2 :(得分:0)
我是初学程序员,但这是非常基础的东西,一旦分解成碎片,就会变得非常清楚。
首先,将阵列(1D)和矩阵(2D)设置为相同的长度(大小)。你做错了什么。 15x1!= 4x4。应该是16x1 == 4x4。
int [] array = new int[16];
int[][] matrix = new int[4][4];
其次,您只需要逐个从数组到矩阵编写元素。所以你需要一个循环来迭代array.length(在这种情况下为16)次。但是,由于您正在使用2D数组,因此需要嵌套循环。因此,不要使用一个运行16次的循环,而是使用2个循环(一个嵌套在另一个循环中),它们都运行4次。这里使用嵌套循环的原因是跟踪矩阵(2D阵列)的[row]和[col]。此外,我们必须创建另一个变量来跟踪我们当前所在的数组索引。
int arrayIndex = 0;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++){
matrix[i][j] = array[arrayPosition];
System.out.print(matrix[i][j] + " ");
arrayPosition++;
}
}
就是这样。现在,数组中的所有元素现在也在矩阵中。希望这很清楚。