我需要根据“白色:黑色:亚洲”的比例来随机分配“种族”变量,例如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

这是什么意思,如果这行不通,有没有更好的方法来对定性变量进行随机化?

最佳答案

您不能像数学中那样链接比较运算符。

语法为:

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。而且,您应该考虑对这些值使用枚举而不是字符串,以使您的代码更清晰,更安全。

10-08 17:41