繁体   English   中英

一维数组和二维数组

[英]1d arrays and 2d arrays

我想知道如何在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("");
      }
  }
 }

我如何告诉它我希望将其连接到阵列

因此,听起来您唯一的问题是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个学生。

仔细看一下这段代码,即使您的一维数组包含许多不能被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];

您可以将2d数组设置为5x(学生人数/ 5)或每学生人数/每组人数/ *组人数* /的人数,因此它更具动态性。

您只需要一个循环即可实现此目的。 循环遍历1d数组中的每个名称,一一获得名称,并将其分配给2d数组中的适当索引。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM