2017-03-17 13 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

関連する問題