如何随机选择数组元素以更改按钮文本?

猎户座

我几乎设法使我的程序正常工作,但是最后一点还是有麻烦。我不相信有人问过这个问题,因为我试图根据随机选择的数组值选择一个JButton。我在网格上生成了一百个JButton,我想随机选择二十个JButton来更改其文本。问题是,文字没有改变!所以我想我还没有真正选择任何按钮。我的问题代码如下:

for (int i = 0; i < 20; i++)
{
    Random randomRow = new Random(10);
    Random randomColumn = new Random(10);
    if (button == buttons[randomRow.nextInt(10)+1][randomColumn.nextInt(10)+1])
    {
        button.setText("treasure");
    }
}
酸性9

您尝试随机选择正好20个按钮是错误的。

您在Java中有一个包含100个JButton的多维数组,在10x10网格中如下所示:

buttons = [
    [JButton0, JButton1, ..., JButton9],
    ...
    [JButton89, JButton90, ..., JButton99]
]

您想随机选择20个按钮。但是在您提供的代码中,您正在遍历所有按钮,并且在循环内正在生成一个随机数,并检查此迭代是否与该随机数匹配。

这是错误的,您应该随机选择20个唯一索引,然后分别更改这些随机索引处的按钮。


这是一些代码,它将从多维数组中随机选择20个按钮。

JButton[][] buttons = new JButton[10][10]; // Array of 100 JButtons
int totalButtons = 0;                      // Length of total buttons
for (int i = 0; i < buttons.length; ++i) { // Count the length of total buttons
    if (i == 0) {
        totalButtons = buttons[i].length;
    } else {
        totalButtons += buttons[i].length;
    }
}
int[] randomIndex = new int[20];            // 20 random button indexes

// Fill random indexes
Random random = new Random();                         // Generate a random
for (int i = 0; i < randomIndex.length; ++i) {        // Iterate over randomIndex array
    int randomInt = random.nextInt(totalButtons);     // Get a random integer from the random

    for (int j = 0; j < i; ++j) {                     // Iterate over randomIndex array but no further than i
        if (randomInt == randomIndex[j]) {            // Check if random index already exists
            randomInt = random.nextInt(totalButtons); // If random index already exists, select a different index
            --j;                                      // Do not iterate, check same index again
        }
    }

    randomIndex[i] = randomInt; // Set random index
}

// Change button texts
for (int i : randomIndex) {                // Iterate over random indexes
    int row = i / 10;                      // Get row from index
    int col = i % 10;                      // Get column from index

    buttons[row][col].setText("treasure"); // Modify randomly selected button
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何选择除ith元素以外的数组中的所有其他值?

如何在Python中从数组中选择随机元素?

如何从数组中随机选择一个元素

如何随机更改numpy数组中某些元素的符号?

从数组更改按钮文本

如何在Woocommerce中从“选择选项”更改按钮文本?

如何从向量或数组中随机选择一个元素?

如何在Javascript中选择加权随机数组元素?

如何更改数组的一些随机元素

如何随机而不是重复地从数组中选择元素?

在R中选择随机元素以及第20/40行之外的元素?

选择数组中的某些元素以创建新数组

选择随机数组元素以避免排除列表的最佳方法

如何从数组中随机选择满足条件的元素?

我们如何选择数组中的随机元素?

如何从int数组中随机选择,然后删除所选元素

如何从数组中选择随机元素?

从数组中选择随机元素

选择数组的随机元素以设置Youtube videoId API

选择数组中的特定元素以进行下拉

数组操作-随机选择元素

Javascript,我如何从数组中获取两个相应的元素以使用随机功能同时生成?

如何更改类元素中按钮的文本?

从数组的特定元素中选择随机元素

如何更改全局数组的元素以供所有线程查看

从数组中选择随机元素并显示在文本框中

如何从存储在接口文件中的数组中选择随机元素?

如何从随机选择中排除数组元素

如何随机选择数组中的元素?