所以我有一個數組Canvas [256] [256],它有一個隨機索引Canvas [r] [r](r是隨機的),設置爲1.然後我想循環遍歷數組看看究竟哪個索引不是0,然後選擇一個隨機點(上面,下面,左邊,右邊),並將其設置爲1。它通過第一個循環完美地工作,但之後給了我一個數組超出界限的錯誤。Java ArrayIndexOutOfBounds錯誤
public static void checkPopulation() {
for(int x = 0; x < Canvas.length; x++) {
for(int y = 0; y < Canvas.length; y++) {
if(Canvas[x][y] != 0) {
particleDiffusion(x, y);
}
}
}
}
public static void particleDiffusion(int x, int y) {
Random r = new Random();
if(r.nextInt(3) == 0) {
Canvas[x+1][y] = 255;
} else if(r.nextInt(3) == 1) {
Canvas[x][y+1] = 255;
} else if(r.nextInt(3) == 2) {
Canvas[x-1][y] = 255;//THIS IS WHERE ERROR IS POINTING
} else if(r.nextInt(3) == 3) {
Canvas[x][y-1] = 255;
}
if(stepsTaken < diffusionStep) {
checkPopulation();
} else {
System.out.println("done");
return;
}
}
有人能幫我解決我在做什麼錯嗎?爲什麼它循環一次,然後給出錯誤?
你用調試器介紹過嗎?當您指定的線路上出現「x = 0」時會發生什麼情況? – Zong
你確定你得到了「方形2維陣列」嗎? – seahawk