-3

我正在使用 java.util.random 的 nextInt 函数来获取一个随机数,我注意到我的代码可能会将 0 传递给该函数。我想知道在这种情况下结果会是什么。我猜它每次都会简单地返回 0,但我不确定。

4

2 回答 2

5

如果您通过,它将引发运行时异常n = 0

public int nextInt(int n) {
    if (n <= 0)
        throw new IllegalArgumentException("n must be positive");

    if ((n & -n) == n)  // i.e., n is a power of 2
        return (int)((n * (long)next(31)) >> 31);

    int bits, val;
    do {
        bits = next(31);
        val = bits % n;
    } while (bits - val + (n-1) < 0);
    return val;
}
于 2012-05-23T03:56:52.210 回答
4

IllegalArgumentException如果你传入零,它会抛出一个。

javadoc

参数: n - 要返回的随机数的界限。必须是积极的。
返回: 来自此随机数生成器序列的 0(包括)和 n(不包括)之间的下一个伪随机、均匀分布的 int 值
抛出: IllegalArgumentException - 如果n不是正数

于 2012-05-23T03:55:32.003 回答