2016-07-04 37 views
0

如何在二維數組中插入混洗列表?Java - 在二維數組中插入混洗列表

ArrayList<Integer> list = new ArrayList<Integer>(); 
for (int i=1; i<17; i++) { 
    list.add(new Integer(i)); 
} 
Collections.shuffle(list); 

for (int c=0; c<16 ; c++) { 
    String number; 
    number = Integer.toString(list.get(c)); 
    for (int i=0; i<4; i++) { 
     for(int j=0; j<4; j++) { 
      JButton btnmix = new JButton(); 
      btnBotonMix[i][j] = btnmix; 
      btnBotonMix[i][j].setText(number); 

     } 
    } 
} 

,我發現了印刷的最後一個數字:

[0][0] 2           [0][0] 4          
[0][1] 2           [0][1] 16 
[0][2] 2           [0][2] 12 
[0][3] 2           [0][3] 6 
[1][0] 2           [1][0] 11 
[1][1] 2           [1][1] 7 
[1][2] 2           [1][2] 3 
[1][3] 2 What Im trying to acomplish ----> [1][3] 14 
[2][0] 2           [2][0] 5 
[2][1] 2           [2][1] 15 
[2][2] 2           [2][2] 9 
[2][3] 2           [2][3] 10 
[3][0] 2           [3][0] 13 
[3][1] 2           [3][1] 1 
[3][2] 2           [3][2] 8 
[3][3] 2           [3][3] 2 

但是當我打印cicle在我的號的變量,我得到我所有的不重複的洗牌亂列表(因爲它是意思是)

回答

2

你正在設置每個按鈕16次,因爲你有3個for循環內的代碼。外部for循環的每次迭代,按鈕文本被設置爲另一個數字,但迭代中的所有按鈕都是相同的。所以它最終會成爲上一次迭代的數字。

試試這個:

int c = 0; 

for (int i=0; i<4; i++) { 
    for(int j=0; j<4; j++){ 
     String number = Integer.toString(list.get(c)); 
     c++; 

     JButton btnmix = new JButton(); 
     btnBotonMix[i][j] = btnmix; 
     btnBotonMix[i][j].setText(number); 
    } 
} 
+2

它也可以計算'和'我* 4 C' + j' – 4castle