1
我有四種方法檢查給定網格位置是否在佔用位置(值爲1)旁邊。網格被假定爲環繞,即如果在50x50網格[0] [1]中是給定位置並且網格[49] [1]被佔用,則該方法應該返回true/My checkNorth並且checkEast方法正常工作,但每次運行程序時,我都會得到一個ArrayIndexOutofBoundsException:-1錯誤,無論是南方還是西方法。我檢查了我的數學,我認爲它應該工作 - 我錯誤地使用了模數,還是錯過了其他的東西? 編輯:澄清包裝標準,字使用更正。圍繞網格 - 只有東/西錯誤
boolean checkWest(int indexA, int indexB)
{
if (indexA-1 > 0)
{
if (grid[indexA-1][indexB] == 1)
{
return true;
}
}
if (indexA-1 < 0)
{
if (grid[(indexA-1)%width][indexB] == 1)
{return true;}
else return false;
}
return false;
}
謝謝!我很感激。兩個問題: 1.如果Java數組是零索引的,應讀取第一個if語句(indexA> = 0)? 2.我知道[width + indexA - 2]是怎麼回事,但爲什麼最好使用模數? –
@ r.ree 1.如果使用'indexA> = 0',那麼最終會嘗試在索引-1處讀取您的網格,因爲'0 - 1 == -1'。這會給你一個'ArrayIndexOutofBoundsException'。 2.這可能取決於個人偏好。我認爲數學更簡單。只要'indexA'永遠不會低到'width + indexA - 2'小於0,它應該可以正常工作。 –