[英]Game Of Life - Out Of Bounds array index
我正在為Java入門課程開發標准的“人生游戲”程序,到目前為止,我已經能夠自己完成很多工作。 但是,在計算給定單元的鄰居來確定它是生存還是死亡時,我遇到了一些困難。
這是我的countNeighbors
方法:
public static int countNeighbors(int [][] board, int A, int B)
{
int [][]a = board;
int count = 0;
if (a[A][B] == 0 || a[A][B] == 1) {
try{
if (a[A-1][B-1] == 1) {count++;}
if (a[A ][B-1] == 1) {count++;}
if (a[A+1][B-1] == 1) {count++;}
if (a[A-1][B ] == 1) {count++;}
if (a[A+1][B ] == 1) {count++;}
if (a[A-1][B+1] == 1) {count++;}
if (a[A ][B+1] == 1) {count++;}
if (a[A+1][B+1] == 1) {count++;}
}
catch (ArrayIndexOutOfBoundsException e) {}
}
return count;
}
當我運行程序時,此方法無法正確計算鄰居數,從而初始化了錯誤的新一代。 如何克服數組的越界索引?
您應檢查A
和B
是否在board
陣列的范圍內。 然后,您應該檢查是否在A
或B
上加上或減去1使您保持在數組的范圍內。
例如:
if (A < a.length && B < a[A].length) {
if (a[A][B] == 0 || a[A][B] == 1) {
if (A > 0 && B > 0)
if (a[A-1][B-1] == 1) {count++;}
....
if (A+1 < a.length && B+1 < a[A].length)
if (a[A+1][B+1] == 1) {count++;}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.