簡體   English   中英

生命游戲-越界數組索引

[英]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;
}

當我運行程序時,此方法無法正確計算鄰居數,從而初始化了錯誤的新一代。 如何克服數組的越界索引?

您應檢查AB是否在board陣列的范圍內。 然后,您應該檢查是否在AB上加上或減去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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM