Java 你如何随机给变量赋值?

Java 你如何随机给变量赋值?,java,string,variables,random,Java,String,Variables,Random,如何将一个随机值赋给变量myVariable为a、b或c?我尝试了以下操作,但出现了几个错误: Random r = new Random(); String i = r.next()%33; switch (i) { case 0: myVariable = "a"; case 1: myVariable = "b"; case 2: myVariable = "c"; } 通常,当涉及到一个随机数时,我只是检查它是否在一个范围内,例如 Random ra

如何将一个随机值赋给变量myVariable为a、b或c?我尝试了以下操作,但出现了几个错误:

Random r = new Random();
String i = r.next()%33;
switch (i) {
  case 0:
    myVariable = "a";
  case 1:
    myVariable = "b";
  case 2:
    myVariable = "c";
}

通常,当涉及到一个随机数时,我只是检查它是否在一个范围内,例如

Random random = new Random();
int output = random.next(100);

if(output > 0 && output < 33) {
    myVariable = "a";
}
else if(output >= 33 && output < 66) {
    myVariable = "b";
}
else {
    myVariable = "c";
}
这使得出现每个值的概率几乎相等。

您应该使用

r.nextInt(3);
获取范围为0-2的数字。所以

switch(r.nextInt(3)) {
  case 0: myVar = "a"; break;
  case 1: myVar = "b"; break;
  case 2: myVar = "c"; break;
}

所有答案都很好,但这里有一个不同的答案:

class Randy {
    private final String[] POSSIBLE_VALUES = { "foo", "bar", "baz", ... };
    private final Random random = new Random();

    String getRandomValue() {
        return POSSIBLE_VALUES[random.nextInt(POSSIBLE_VALUES.length)];
    }
}

提供必要的代码来重现您的准确错误。另外,不要忘记为变量提供默认值。我认为r.next%33不会返回字符串。r.next的size参数在哪里?不,它不会返回字符串,switch语句也不会使用字符串。阅读javadoc?
class Randy {
    private final String[] POSSIBLE_VALUES = { "foo", "bar", "baz", ... };
    private final Random random = new Random();

    String getRandomValue() {
        return POSSIBLE_VALUES[random.nextInt(POSSIBLE_VALUES.length)];
    }
}