Java 如果我将0传递给random.nextInt()会发生什么

Java 如果我将0传递给random.nextInt()会发生什么,java,Java,我正在使用java.util.random的nextInt函数来获取一个随机数,我注意到我的代码可能会向该函数传递一个0。我想知道在这种情况下会有什么结果。我猜它每次都会返回0,但我不确定。如果传入0,它将抛出一个IllegalArgumentException 从: 参数: n-要返回的随机数的界限必须为正。 返回: 此随机数生成器序列中0(包括)和n(不包括)之间的下一个伪随机、均匀分布的int值 抛出: IllegalArgumentException-如果n不是正数 如果传递n=0,它将

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

如果传入0,它将抛出一个
IllegalArgumentException

从:

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


如果传递
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;
}
public int nextInt(int n){
如果(n>31);
int位,val;
做{
比特=下一个(31);
val=位%n;
}而(位-val+(n-1)<0);
返回val;
}

您可以随时尝试,也可以查看源代码…Downvote,因为它很容易测试您自己。如果你不明白结果,你可以把它们贴出来,问为什么它们是那样的。