我有一个代码,基本上可以按照自定义顺序遍历数组。 我提供了一个代码段,该代码段说明了我的问题所在。出于某种原因,Java有时会在8上给我一个arrayoutofboundsexception,但是据我所知,while循环中以及在它之前的if语句应防止它达到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;
答案 0 :(得分:1)
再次检查。如果val正好是8,则您的条件:
if ((size/2)<val)
从8开始不运行!<8。 想必您要:
if ((size/2)<=val)