我有一段代码,基本上是按照自定义顺序运行数组。我已经包含了一段代码片段,说明了我的错误。出于某种原因,Java有时会在8上给我一个boundseception的数组,但据我所知,while循环中的if语句和它之前的if语句应该会阻止它达到8。有人能向我解释一下变量val不时达到8的原因吗。
int size = 16;
done = new boolean[size/2];
int val = (int)(Math.random()*255);
int a = 0;
if ((size/2)<val)
val=0;
while (done[val+a]) {
a++;
if ((val+a) > (int)(size/2)){
val=0;
a=0;
}
}
done[val+a]=true;
再次检查。如果val恰好为8,则您的条件为:
if ((size/2)<val)
不运行,从8<8.大概你想要:
if ((size/2)<=val)