我有这段代码,它产生一个随机ASCII字符,基于65到90的随机数生成器(ASCII中的A-Z),有50%的可能性是字母或数字。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 15; i++) {
if (random(0, 100) < 50) { //50% chance of it being a number or letter
sb.append((char) random(65, 90));
} else {
sb.append(random(0, 9));
}
}
输出:
9M0753YB840X370
现在,如果我们让它更漂亮并使用三元运算符,我们就会得到:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 15; i++) {
sb.append(random(0, 100) < 50 ? (char) random(65, 90) : random(0, 9));
}
输出:
69817716898127868775697285
输出随机值的方法:
public static int random(int min, int max) {
return (int) (Math.random() * (max - min + 1) + min);
}
我无法弄清楚为什么这不能按预期工作,因为在这种情况下三元和if
块应该是等效的。
总而言之,代码块if
有效,但三元代码不起作用。