我正在嘗試做一個家庭作業。我必須使用動態編程來顯示下一個要移動的人是否處於勝利/失敗狀態。我並不需要幫助解決實際問題,我需要幫助來解決索引越界異常問題,這讓我很困惑。我只會在這裏粘貼部分代碼,因爲我只需要查看for循環。我也不希望班上的任何人看到我的所有代碼並複製它。如果您需要更多數據,請告訴我。因此,這裏是代碼:索引超出作業異常
if(primeArray[x] == true){
for(int i = 1; i <= x; i++){
if(primeArray[i]== true){
newRowNumber = x - i;
}
if(dynaProgram[newRowNumber][columnNumber] < minimum){
minimum = dynaProgram[newRowNumber][columnNumber];
}
}
}
//COMPOSITE CASE FOR X!
else{
for(int k = 1; k <= x; k++){
if((primeArray[k] == false)){
newRowNumber = x - k;
}
if(dynaProgram[newRowNumber][columnNumber] < minimum){
minimum = dynaProgram[newRowNumber][columnNumber];
}
}
出於某種原因,if(primeArray[i] == true
運行正常,但我發現索引越界異常的if(primeArray[k] == false
。這兩者之間的唯一區別是在for循環中使用變量k over i(for循環相同)我沒有在我的代碼中的任何其他地方使用任何變量。我不知道爲什麼這發生一個而不是另一個。在這兩種情況下,x保持相同的數字。
我也在第二個minimum = dynaProgram[newRowNumber][columnNumber]
上得到一個索引超出範圍異常,而第一個沒有遇到錯誤。我知道這可能是一個愚蠢的錯誤,但我無法弄清楚。如果我將'k'for循環更改爲k < x
if(primeArray[k] == false
一行中的超出範圍外的索引消失,但它不正確。 (然而,第二個minimum = dynaProgram[newRowNumber][columnNumber]
上的錯誤並未消失。)
所有此代碼都位於嵌套for循環中,該循環遍歷表中的行和列以填充它們。如果刪除上面的代碼並只是把dynaProgram[rowNumber][columnNumber] = 1
我沒有問題,所以我不認爲這是問題。
我建議你,調試代碼並阻止異常 – developer
是的,嘗試在Eclipse下使用Debugger運行代碼。 –
我的第一個猜測是,未顯示的外部循環將x從1到x <= primearray.length,而不是從0到x
schippi