我创建了一个方法,该方法需要生成随机数,条件是下一个随机数与数组中的前一个不匹配,这是代码

// some code

int k=0;

//some code....

randomgenerator(k); // method call

public void randomgenerator(int j)
{

    for(j=0; j<=99; j++){
        if(j >= 1){
            if (randomset.get(j) == randomset.get(j-1)){
                randomset.add(0 + ( j  ,  int)(Math.random() * ((99 - 0) + 1)));
            }
            else{
                randomset.add(0 + (int)(Math.random() * ((99 - 0) + 1)));
            }
        }
    }
}


我得到的错误是java.lang.IndexOutOfBoundsException:无效的索引1,大小为1

最佳答案

由于最初的randomset为空,因此其大小为0,并在索引1处返回异常。如果randomset.add(0 + (int)(Math.random() * ((99 - 0) + 1)));(不是> = 1),则添加j < 1的最佳方法。

正确的代码:

public void randomgenerator(int j)
{
for(j=0; j<=99; j++){
    if(j >= 1){
        if (randomset.get(j) == randomset.get(j-1)){
            randomset.add(0 + ( j  ,  int)(Math.random() * ((99 - 0) + 1)));
        }
        else{
            randomset.add(0 + (int)(Math.random() * ((99 - 0) + 1)));
        }
    }
    else {
           randomset.add(0 + (int)(Math.random() * ((99 - 0) + 1)));
    }
}


}

08-17 02:00