2017-03-17 135 views
-4

如何阻止连续选择颜色?随机颜色重复

我试图避免在从数组中选择的行中重复相同的颜色。我尝试过比较颜色是否相同,但如果再次随机选择,则不能跳过颜色。

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

我试图避免从阵列选择行重复相同的颜色。我尝试过比较颜色是否相同,但如果再次随机选择,则不能跳过颜色。 – Dav1497

+1

你的问题是什么? – Gregg

+0

为什么到目前为止缩进?我怀疑你必须有很多嵌套。 – weston

回答

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; 
} 
+0

谢谢! :) – Dav1497

+0

@ Dav1497如果此答案解决了您的问题,请接受此答案:单击答案左侧的灰色复选标记。 – muescha