[英]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.