2012-10-24 392 views
0

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

如何我告訴大家,我想這是連接到陣列

+0

你只使用1個數組tho,那是2D數組。 – Lyrion

+0

那麼你的意思是你只有10個名字? – Jimmy

+2

2D數組並不意味着它是一個有兩行的數組,這意味着它是一個存儲對一維數組的引用的數組。 3D陣列存儲對2D陣列的引用,等等...... – jlordo

回答

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(""); 
    } 
} 

這將創建各5名學生2 「行」。

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]; 
0

是不能分開的,您可以使二維數組5倍(數的學生/ 5)或每組人數/每組人數/ *組數* /因此它更具動態性。

您將只需要一個循環來實現這一點。循環遍歷1d數組中的每個名稱,逐個獲取名稱並將其分配給2d數組中的相應索引。

爲了弄清楚索引其中的一個可能只是循環mod的計數器(%)每個組的人數,這將使索引保持在0到4之間。要弄清楚其他索引,你可以將mod(%) (每組學生人數/人數)

因此它看起來像board[i%ppg][i%nog] ppg是每組人數,nog是組數。您可以輕鬆計算組數。

編輯:二維數組很容易,如果你有一個非常簡單的方法來形象化他們。我在學習2D陣列時所做的訣竅就是將它們視爲棋盤。國際象棋棋盤上的垂直和水平索引由字母和數字表示,就像二維數組一樣,除了在編程中它只是數字。