在random.nextInt(参数)上获取IllegalArgumentException错误

时间:2014-09-02 22:29:46

标签: java android random illegalargumentexception

我在错误行上收到illegalArgumentException。

      private final static int SPOT_DIAMETER=100;
      private int viewWidth;

      .

      .

      .


     @Override
      protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        // TODO Auto-generated method stub
      viewHeight=h;
      viewWidth=w;

     }

“viewWidth-SPOT_DIAMETER”返回整数,不是吗?我怎么解决这个错误?

    public void addNewSpot(){



   int x=random.nextInt(viewWidth-SPOT_DIAMETER);//error line
   .

   .
   .
    }

3 个答案:

答案 0 :(得分:2)

正如Random.nextInt(int)JavaDoc所指定的那样,如果你用负数来称呼它,你就会得到那个例外,这可能是正在发生的事情。

Parameters:
n - the bound on the random number to be returned. Must be positive.

Returns:
the next pseudorandom, uniformly distributed int value between 0 (inclusive) and n (exclusive) from this random number generator's sequence

Throws:
IllegalArgumentException - if n is not positive

答案 1 :(得分:0)

当您调用SPOT_DIAMETER方法时,您确定要输入的数字大于100(您的onSizeChanged())吗?检查一下,因为正如JSlain已经说过的那样,当randomizer采用负数时会抛出此异常。

此外,当您尝试调用随机数发生器时,也许您的方法无法工作/调用且viewWidth变量为空。

答案 2 :(得分:-1)

假设它是公共常量,请使用viewWidth.SPOT_DIAMETER