Java - 从列表中分配正确的数字

时间:2016-07-05 09:32:54

标签: java

我有一个介于1和16之间的非重复Shuffled列表和一个2D数组,我想要做的是将数字16分配给位置btn [3] [3],所有其他位置都可以有其他剩余列表值(1 - 15)

代码:

int c = 0;
    int v = 0;
    for (int i=0; i<4; i++) {
        v=0;
        for(int j=0; j<4; j++){


            String number = Integer.toString(list.get(c));
            c++;

            if (i == 3 && j == 3){
                JButton btnmix = new JButton();
                btnBotonMix[i][j] = btnmix;
                btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90);
                btnBotonMix[i][j].setText(number);
            }

            else{ 
                JButton btnmix = new JButton();
                btnBotonMix[i][j] = btnmix;
                btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90);
                btnBotonMix[i][j].setText(number); 
            }

            v = v + 90;
        }
    }

我正在寻找的是,总是在我的索引中分配数字btn [3] [3]

所以我想得到这个(数字16总是在[3] [3]中,所有其余的在随机位置):

[0][0] 15
[0][1] 11
[0][2] 14
[0][3] 5
[1][0] 12
[1][1] 3
[1][2] 8
[1][3] 9
[2][0] 6
[2][1] 2
[2][2] 13
[2][3] 1
[3][0] 4
[3][1] 7
[3][2] 10
[3][3] 16

3 个答案:

答案 0 :(得分:1)

PropertyChangeListener

答案 1 :(得分:0)

请尝试这个让我知道 -

 int c = 0;
        int v = 0;
    Arrays.sort(list);//added
        for (int i=0; i<4; i++) {
            v=0;
            for(int j=0; j<4; j++){


            String number = Integer.toString(list.get(c)); //Changed
            c++;
if (i == 3 && j == 3){
            JButton btnmix = new JButton();
            btnBotonMix[i][j] = btnmix;
            btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90);
            btnBotonMix[i][j].setText(number);
        }

        else{ 
            JButton btnmix = new JButton();
            btnBotonMix[i][j] = btnmix;
            btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90);
            btnBotonMix[i][j].setText(number); 
        }

        v = v + 90;
    }
}

我认为现在你不需要了。

答案 2 :(得分:0)

最简单的方法是在到达位置时检查检索到的数字是否为16 [3] [3]

    int c = 0;
    for (int i=0; i<a.length; i++) {
        for(int j=0; j<a.length; j++){
            String number = list.get(c);
            c++;
            JButton btnmix = new JButton();
            btnBotonMix[i][j] = btnmix;
            btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90);
            if (i == 3 && j == 3){
                if(number.equals("16")){
                  btnBotonMix[i][j].setText(number); 
                }
            }
            else{ 
               btnBotonMix[i][j].setText(number); 
            }
        }
    }