0

我想知道如何在java中将一维数组拆分为二维数组?我知道如何设置它们,并且我知道我必须使用 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("");
      }
  }
 }

如何告诉它我希望它连接到数组

4

3 回答 3

0

您可以将二维数组设为 5x(学生人数 / 5)或每组人数按学生人数 / 每组人数 /* 组数 */ 使其更具动态性。

您只需要一个循环即可实现这一目标。循环遍历一维数组中的每个名称,一一获取名称并将其分配给二维数组中的适当索引。

要找出索引,其中一个可能只是每组循环 mod(%) 人的计数器,这将使索引保持在 0 到 4 之间。要找出另一个索引,您可以使用 (每组学生人数/人)

所以看起来board[i%ppg][i%nog]ppg 是每组的人,而 nog 是组的数量。您可以轻松计算组数。

编辑:如果您有一种非常简单的方法来可视化它们,那么二维数组很容易。我在学习 2d 数组时所做的技巧是将它们视为棋盘。棋盘有由字母和数字表示的垂直和水平索引,就像二维数组一样,除了在编程中它只是数字。

于 2012-10-24T13:31:17.600 回答
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("");
    }
}

这将创建 2 个“行”,每行 5 个学生。

于 2012-10-24T13:17:36.203 回答
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];
于 2012-10-24T13:20:41.770 回答