我需要根据比例白色随机化“种族”变量:黑色:亚洲,例如2:1:1
我的程序创建新人(对象),我希望随机化他们的种族
//CONSTRUCTOR
public people() {
race = raceGenerator();
}
public String raceGen() {
String info;
double probAllocation = Math.random();
if (probAllocation < 0.5) {
info = White;
} else if (0.5 < probAllocation < 0.75) {
info = Black;
} else {
info = Asian;
}
return info;
}
问题在于行else if (0.5 < probAllocation < 0.75) {info = Black;}
我的IDE告诉我,我有bad operand types
这是什么意思,如果这不起作用,有更好的方法来随机化定性变量吗?
答案 0 :(得分:4)
你不能像数学一样链接比较运算符。
语法为:
else if (0.5 < probAllocation && probAllocation < 0.75)
或者更确切地说,为了避免你的范围内出现漏洞:
else if (0.5 <= probAllocation && probAllocation < 0.75)
甚至只是
else if (probAllocation < 0.75)
因为每个小于0.5的值都将由第一个if
处理。
此外,变量在Java中以小写字母开头,常量都是大写的。因此值应该是BLACK,WHITE和ASIAN。你应该考虑使用枚举而不是字符串来表示这些值,以使你的代码更清晰,更安全。
答案 1 :(得分:0)
你需要两次测试......
if (0.5 < probAllocation && probAllocation < 0.75) {
...
}
答案 2 :(得分:0)
代码行else if (0.5 < probAllocation < 0.75) {info = Black;}
未正确写入。你应该使用条件AND运算符来测试这两种情况。
否则如果(0.5&lt; probAllocation&amp;&amp; probAllocation&lt; 0.75){info = Black;}
要生成随机数,您可以使用java.util包中的Random类。
随机randomGenerator = new Random();
int rInt = randomGenerator.nextInt(10); //这将生成0到10之间的随机数。