Планирование вокруг с помощью некоторых алгоритмов вычислительной разведки, новая область для меня.Arraylist.indexOf возвращает -1
По какой-то странной причине у меня возникают проблемы при поиске индекса определенного массива.
Так, например, у меня есть два массива, как parentOne, так и parentTwo типа Integer. Я добавляю 300 случайных целых значений для обоих списков массивов между 1 - 300.
Затем я пытаюсь получить значение из случайно выбранного индекса в массиве между 1-300, например, выберите город может = 129, код затем должен перейти к индексу 129 parentOne и вернуть соответствующее значение в этой позиции, однако он возвращает -1.
Своеобразный то, что это полностью работает при поиске любого индекса < 35.
Любая помощь будет высоко ценится!
спасибо.
private int[][] cycleCrossover(int first, int second){
//tempArray to return
int[][] tempArray = new int[2][numberOfAreas];
if(cycleCrossover == true){
//select a random city
int selectedCity = 35;//random.nextInt(numberOfAreas);
int parentOneCity = 0;
int parentTwoIndex = 0;
int parentTwoCity = 0;
int parentOneIndex = 0;
int index = 0;
//used to store parent and exchange values as well as cycle
ArrayList<Integer> parentOne = new ArrayList<Integer>();
ArrayList<Integer> parentTwo = new ArrayList<Integer>();
ArrayList<Integer> cycle = new ArrayList<Integer>();
//Assign values to the arrays
for(int i = 0; i <numberOfAreas; i++){
parentOne.add(population[first][i]);
parentTwo.add(population[second][i]);
}
System.out.println(parentOne);
//get parentOne Cities into new array
long count = selectedCity;
//Determine my cycle contents
while(count > 0){
//Get the index of the first city
index = parentOne.indexOf(selectedCity);
//Add the first cities index to my cycle
cycle.add(parentOne.indexOf(selectedCity));
//add the next city to my parents cycle
selectedCity = parentTwo.get(index);
//take 1 from count
count = count - 1;
}
}
'cycle.add (index)' выглядит чище ... В любом случае. По-видимому, 35 нет в списке или одно из других значений –
Ошибка ясно, ваш список «parentOne» не имеет выбранного города. Вы уверены, что добавили его? Кстати, где определяется 'numberOfAreas'? –
Трудно помочь, не зная содержание «населения». Пожалуйста, смотрите о [mcve] или выполните код с помощью отладчика –