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