在Google Play的崩溃报告中获取Random.nextint的IllegalArgumentException

时间:2014-02-19 02:22:28

标签: android

我正在看我的崩溃报告,它说下面的报告

java.lang.IllegalArgumentException异常 在java.util.Random.nextInt

我不明白这一点,nextint只返回一个最大随机数的int,而java编译器不允许你输入不同的类型。

这个例外怎么可能会消失?????

2 个答案:

答案 0 :(得分:0)

只有当给定的值为非正数时,Nextint才会抛出IllegalArgumentException。

答案 1 :(得分:0)

如果有疑问,您可以随时使用JDK。在这种情况下,您可以查找Random.nextInt here。查看源代码,当且仅当给定的整数不是正数时,才会抛出IllegalArgumentException

为了完整起见,相关代码为:

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;
 }}

编辑:OP在评论中提出了一个问题,

  

你能解释一下“grep the JDK”吗?

这里我的意思是在grepcode.com上搜索“Random.nextInt”。