如何将洗牌后的列表插入2D数组?
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中打印我的数字变量时,我的所有非重复洗牌列表都无序(因为它的意思是)
答案 0 :(得分: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);
}
}