簡體   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