如何添加或Java中的数组中删除一个随机数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何添加或Java中的数组中删除一个随机数?相关的知识,希望对你有一定的参考价值。
小XO游戏我提出的一个部分是每个我按下的按钮时,它变成符号X,然后电脑会随机选择一个按钮,使注册Ò上。
这是混淆了我的部分是随机按钮,电脑就会选择。我有9个按键一个JButton
阵列,但是当计算机选择,将有选择已具有符号X这会毁了游戏的按钮的机会。
没有得到重复是不是一个问题,很容易解决,但我怎么能放弃与符号X按钮状态,这是不可用而产生的随机数?这是我到目前为止的代码:
在actionPerformed方法:
if (e.getSource().equals(button1)) {
button1.setIcon(X);
xoro = true;
button1.setEnabled(false);
button1.setForeground(Color.BLACK);
}
执行随机数,并选择按钮的方法:
void computer_play(JButton[] buttons, ImageIcon O, ImageIcon X)
{
Random rand = new Random();
int randomnumber = rand.nextInt(8);
buttons[randomnumber].setIcon(O);
buttons[randomnumber].setEnabled(false);
}
答案
我建议保持可用按钮的单独的阵列,或者通过过滤该主阵列或通过保持一个单独的阵列是最新的。然后生成0之间和该较小阵列的长度的随机整数。经过充分测试,下面未编译代码。
void computer_play(JButton[] buttons, ImageIcon O, ImageIcon X)
{
JButton[] availableButtons = buttons.stream().filter((j) -> j.getIcon() == null).toArray(size -> new JButton[size]);
Random rand = new Random();
int randomnumber = rand.nextInt(availableButtons.length);
availableButtons[randomnumber].setIcon(O);
availableButtons[randomnumber].setEnabled(false);
}
另一答案
只是固定我的问题,并想张贴在这里的人的解决方案,有一些类似的问题。
我创建了一个将包含9倍的数字从0到8列表
List<Integer> randomize = new ArrayList<>();
for(int i =0; i < 9; i++)
{
randomize.add(i);
}
然后通过shufflle的Collections.shuffle(randomize);
名单
现在,我们有8个“随机”的数字,没有重复(问题1解决)
所以现在我会做类似button[randomize.get(0)].setIcon(O)
和randomize.remove(0)删除索引。这将删除所选的号码,当我按下按钮,以避免重复。
当涉及到用户播放按钮,我会按住按钮的位置的记录,并从当它得到的是这样按下列表中删除这个数字:
randomlist.remove(new Integer(Arrays.asList(buttons).indexOf(button1)));
现在我和我的家庭作业完成了!下面是该程序的图片:
以上是关于如何添加或Java中的数组中删除一个随机数?的主要内容,如果未能解决你的问题,请参考以下文章