2012-10-24 386 views
0

我想知道如何在java中将一个1d数组拆分为2d数组? 我知道如何设置他们两个,我知道我必须迭代他们两个使用for循环即时通讯只是不知道我会怎么做。 我有一个学生姓名的数组,我想要第一个5在第一行,然后在第二个数组的底部行5,以创建5个学生组。一维数组和二维数组

到目前为止我有:

public void main(String[] args) 

{ 

    for (int x=0; x<5;x++) 
    { 
     for (int y=0; y<5;y++) 
     { 
      board[x][y] = (letters)y; 
      System.out.print(board[x][y]); 
      System.out.print(""); 
     } 
    } 
} 

如何我告诉大家,我想这是连接到阵列

+0

你只使用1个数组tho,那是2D数组。 – Lyrion

+0

那么你的意思是你只有10个名字? – Jimmy

+2

2D数组并不意味着它是一个有两行的数组,这意味着它是一个存储对一维数组的引用的数组。 3D阵列存储对2D阵列的引用,等等...... – jlordo

回答

0

所以,它听起来像你唯一的问题是letters的计算指数。试试这个:

for (int x = 0; x < 2; x++) { 
    for (int y = 0; y < 5; y++) { 
     board[x][y] = letters[x * 5 + y]; 
     System.out.print(board[x][y]); 
     System.out.print(""); 
    } 
} 

这将创建各5名学生2 “行”。

0

就拿这段代码仔细一看,它也计算索引值,即使你的一维数组具有多个元素,其由5

String[] names = new String[104]; 
double size = names.length; 

String[][] yetAnother = new String[(int) Math.ceil(size/5)][5]; 

for (int i = 0; i < size; i++) 
    yetAnother[(int) Math.ceil(i/5)][i % 5] = names[i]; 
0

是不能分开的,您可以使二维数组5倍(数的学生/ 5)或每组人数/每组人数/ *组数* /因此它更具动态性。

您将只需要一个循环来实现这一点。循环遍历1d数组中的每个名称,逐个获取名称并将其分配给2d数组中的相应索引。

为了弄清楚索引其中的一个可能只是循环mod的计数器(%)每个组的人数,这将使索引保持在0到4之间。要弄清楚其他索引,你可以将mod(%) (每组学生人数/人数)

因此它看起来像board[i%ppg][i%nog] ppg是每组人数,nog是组数。您可以轻松计算组数。

编辑:二维数组很容易,如果你有一个非常简单的方法来形象化他们。我在学习2D阵列时所做的诀窍就是将它们视为棋盘。国际象棋棋盘上的垂直和水平索引由字母和数字表示,就像二维数组一样,除了在编程中它只是数字。