我在错误行上收到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
.
.
.
}
答案 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
。