如何按列专业将1D数组转换为2D

时间:2011-05-11 18:46:02

标签: java arrays multidimensional-array

说我有像int[] x = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}这样的一维数组 我想把它转换成2D,它看起来像:

1 5  9 13  
2 6 10 14  
3 7 11 15  
4 8 12 16  

目前,我有

for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < Nb; j++)
        s[i][j] = x[i + j];
}

然而,这不起作用。我该怎么做?

3 个答案:

答案 0 :(得分:1)

尝试

for (int i = 0, k=0; i < 4; i++)
  for (int j = 0; j < Nb; j++)
    s[j][i] = x[k++]; // you may want s[i][j]

答案 1 :(得分:1)

我认为流浪7是一个错字?

由于我们希望内环向下移动,而外部向右移动,你可以这样做:

for i in (0..width)
   for j in (0..height)
      s[j][i] = x[i*height+j]

追踪这个说明了它的工作原理:

s[0][0] = x[0*4+0] = x[0]
s[1][0] = x[0*4+1] = x[1]
...
s[0][1] = x[1*4+1] = x[5]

答案 2 :(得分:0)

不知道Nb是什么,但是您在阅读初始数组时已经离开了。尝试这样的事情:

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
        s[j][i] = x[i*4 + j];