我正在重建掃雷艇的練習,並寫了這一點的代碼,以避免IndexOutOfBounds錯誤。有沒有辦法避免這一點,所以我不必明確寫出一個if語句每一個可能的錯誤?我想讓每個數組的索引更大,並忽略第一個和最後一個索引。我錯過了明顯的東西嗎?有什麼辦法可以避免這段代碼?
if (row > 0 && col > 0)
ray[row - 1][col - 1] += 1;
if (row > 0)
ray[row - 1][col] += 1;
if (row > 0 && col < height - 1)
ray[row - 1][col + 1] += 1;
if (col > 0)
ray[row][col - 1] += 1;
if (col < height - 1)
ray[row][col + 1] += 1;
if (row < width - 1 && col > 0)
ray[row + 1][col - 1] += 1;
if (row < width - 1)
ray[row + 1][col] += 1;
if (row < width - 1 && col < height - 1)
ray[row + 1][col + 1] += 1;
東西似乎有點偏離。爲什麼你要從2開始,如果'row = 3'? – Makoto 2013-03-18 04:23:32
很酷。另外,使用min/max會更清楚'startRow = max(0,row-1)' – ZhongYu 2013-03-18 04:26:43
@Makoto問題中的代碼遍歷'ray [row] [col]'的所有鄰居。所以如果'row = 3',我們想要檢查從第2行到第4行的所有單元格,如果它們存在的話。 – 2013-03-18 04:27:23