如何从java中的2d按钮数组中随机选择一个按钮?

时间:2014-03-19 23:14:58

标签: java arrays

我制作了2d JButtons数组

public JButton[][] buttons = new JButton[5][5];

并创建了一个for循环,使这些按钮成为25次

for(int i = 0; i < 5; i++) {
    for(int j = 0; j < 5; j++) {
     buttons[i][j] = new JButton();
        panel.add(buttons[i][j]);

            }
        }
    }

现在我要做的是从上面创建的那些中随机选择一个按钮,并将其文本设置为我定义的内容,我尝试过这样,但它不起作用,它只从3个按钮中选择而不是其余的。

int r = (int) (Math.random());
buttons[r][r].setText(button[random][random].getName());

所以基本上,我想从数组中选择一个随机按钮,并将其值更改为其名称。另外,当我打印出随机打印的名称时,如何打印出当前字符串中按钮的名称。

感谢。

2 个答案:

答案 0 :(得分:3)

表达式(int) (Math.random())总是计算为0,因为Math.random()返回[0, 1)范围内的 double - 这样的双精度在转换为时总是会导致0整数。

而是创建一个新的Random对象并使用Random.nextInt(n)在该范围内选择适当的值。例如,

Random r = new Random();
int i = r.nextInt(5); // chooses 0, 1, .. 4
int j = r.nextInt(5);

JButton b = buttons[i][j];
b.setText(b.getName());

(但你可能不想要Component.getName() ..)

答案 1 :(得分:1)

您需要选择一个随机数组,然后选择一个随机索引,以确保您不会超出单个数组中任意数组的范围。

//create buttons first
Random random = new Random();
JButton[] buttons randomButtonsArray = buttons[random.nextInt(buttons.length)];
JButton randomButton = randomButtonsArray[random.nextInt(randomButtonArray.length)];