0

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

这是什么意思,如果这不起作用,是否有更好的方法来随机化定性变量?

4

3 回答 3

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 中的变量以小写字母开头,而常量都是大写字母。所以这些值可能应该是黑色、白色和亚洲。您应该考虑对这些值使用枚举而不是字符串,以使您的代码更清晰、更安全。

于 2013-05-07T06:50:15.813 回答
0

你需要两个测试...

if (0.5 < probAllocation && probAllocation < 0.75) {
  ...
}
于 2013-05-07T06:51:46.960 回答
0
  1. 代码行else if (0.5 < probAllocation < 0.75) {info = Black;}没有正确编写。您应该使用条件 AND 运算符来测试这两个条件。

    else if (0.5 < probAllocation && probAllocation < 0.75) {info = Black;}

  2. 要生成随机数,您可以使用 java.util 包中的 Random 类。

    随机 randomGenerator = new Random();

    int rInt = randomGenerator.nextInt(10); //这将生成0到10之间的随机数。

于 2013-05-07T07:05:27.510 回答