如何阻止连续选择颜色?
我试图避免在从数组中选择的行中重复相同的颜色。我已经尝试比较颜色是否相等但是再次随机选择时无法跳过颜色。
Color color[]={Color.YELLOW,Color.MAGENTA,Color.BLACK,new Color(0x964B00),new Color(0xB57EDC)};
Random rand=new Random();
Color newColor = color[rand.nextInt(5)];
for(int i=0;i<5;i++){
if(newColor.equals(color[i]));{
newColor=color[rand.nextInt(5)];
}
myPanel.colorArray[myPanel.mouseDownGridX][myPanel.mouseDownGridY] = newColor;
myPanel.repaint();
}
答案 0 :(得分:1)
您的问题不是很清楚,您当前的代码会显示一个经常重复的小选择大小。如果您的问题理解为:
,这是一种可行的解决方案如何创建新号码不是前一个号码的随机数?
(注意:代码是从头开始 - 它应该显示randomExclude
)
Color color[]={Color.YELLOW,Color.MAGENTA,Color.BLACK,new Color(0x964B00),new Color(0xB57EDC)};
// remember the previous color somehow
int previousColorIndex = 0;
// -----
newColorIndex = randomExclude(previousColorIndex)
myPanel.colorArray[myPanel.mouseDownGridX][myPanel.mouseDownGridY] = color[newColorIndex];
myPanel.repaint();
previousColorIndex = newColorIndex
// -----
public static int randomExclude(int previous)
{
Random rand=new Random();
int random =rand.nextInt(5);
if(previous == random)
{
return randomExclude(previous);
}
}
return random;
}