我每次運行以下方法時都會收到錯誤。即使列表不爲空,錯誤依然存在。不尋常的ArrayIndexOutOfBoundsException錯誤
public Position getBestMove() {
int max = -10000;
int best = -1;
System.out.println("CALLED");
System.out.println(successorEvaluations.size());
// iterate over successors and return the one with the highest eval result
for (int i = 0; i < successorEvaluations.size(); i++) {
if (max < successorEvaluations.get(i).score) {
max = successorEvaluations.get(i).score;
best = i;
}
}
return successorEvaluations.get(best).pos;
}
誤差輸出:
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Board.getBestMove(Board.java:151)
您的應用程序是否在多個線程中運行,並且可以通過其他線程更改successorEvaluations?如果只有一個線程,則在代碼中看不到任何應該導致ArrayOutOfBoundsException的任何內容。 – Einar
你確定將'max'初始化爲'-10000'是否正確?你期望'successorEvaluations.get(i).score'能保持什麼樣的數值範圍? – Eran
你正在測試的這個數組的內容是什麼? –