2014-04-01 37 views
1
String [] rnum = {"Black", "Red", "Black", "Red", "Black", "Red", "Black","Red", 
"Black", "Red", "Black", "Red", "Black", "Red", "Black", "Red","Black", "Red", "Green"}; 
int A = rnum.length; 
//the "Math.random() method will get you a random color 

int random = (int) (Math.random() * A); 
//randomize the strings 
String Color = rnum[random]; 

String数组,我怎么说,“如果颜色为黑色,然后做这个”或同为绿色或同为红色的”在Java中随机

+0

color.equals(“Black”) –

+1

您可以为此使用枚举。但是如果你不想使用枚举,你会发现这是非常罕见的情况之一,当使用'=='而不是'.equals'来比较字符串时。 –

+0

我同意大卫华莱士,枚举仍然是最好的方式,还可以与枚举巫术(在Java 7之前),如果一些颜色被添加到用例,没有太多的工作来重构代码。 – chillworld

回答

0

Color不应该大写,因为这可以是一个Java类。名字

为了这个目的,你可以使用一个三元操作符(缩短的if-else):

String color = (rnum[random].compareTo("Black") == 0 ? ** do something here ** : ** do something if the color is not "Black" **);

或:

String color = ""; 
if(rnum[random].compareTo("Black") == 0) { 
    // do stuff 
} 
else { 
    // it's not black. do other stuff. 
} 

使用红色和绿色,只需将"Black"替换为"Red""Green"即可。

5

你的意思是......

if(Color.equals("Black")) { 
    // then do this 
} else if(Color.equals("Red"){ 
    // then do this 
} 

甚至(在Java> = 1.7)

switch(Color) { 
    case "Black": 
     // then do this 
     break; 
    case "Red": 
     // then do this 
     break; 
} 
+1

请注意,可以从java 7开始使用字符串。旧版本不支持这一点。 – chillworld

0

其他人说的方法来决定的平等,我想补充了一些有关的算法。

考虑增加颜色的重量,我看到红色和黑色出现9次,而绿色出现一次。我会添加一个包含颜色名称和要应用的重量的对象。像{“绿色”,1},{“红色”,9},{“黑色”,9}。

总结权重并以某种方式排列颜色并决定随机数下降的位置。

这将使更多的干净的代码和更好的解决方案。