Я продолжаю получать ошибку каждый раз, когда запускаю следующий метод. Несмотря на то, что список не пустой, ошибка все еще сохраняется.Необычная ошибка 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)
Является ли ваше приложение запущенным в нескольких потоках и может ли преемник переоценки быть изменен из другой темы? Я ничего не вижу в вашем коде, что должно привести к исключению ArrayOutOfBoundsException, если есть только один поток. – Einar
Вы уверены, что инициализация 'max' в' -10000' верна? Какой диапазон значений вы ожидаете 'successorEvaluations.get (i) .score' для хранения? – Eran
Каково содержимое этого массива, против которого вы тестируете? –