Это может быть полезно любому, кто пытается динамически заполнить ArrayList.Вывод, перезаписывающий ранее сохраненные переменные в ArrayList
Spikes[]
- массив, представляющий игровое поле.
Beneath - условное заявление.
if(Spikes[inte1]>=1 && Spikes[inte2]>=1 && Spikes[destination1]>=0 && Spikes[destination2]>=0){
inte1 и inte2 - это int, представляющие начальное местоположение части. destination1 и destination2 - это ints, представляющие начальное местоположение + бросок кубика;
As Spikes - это игровая площадка, состояние может быть удовлетворено многими начальными местоположениями + кубиками, которые разворачивают так много разных направлений.
При выполнении условия может быть создано множество возможных ходов.
Моя проблема в том, что (если условие выполнено), когда я сохраняю возможные перемещения в ArrayList, 4 целых числа, сгенерированные первым «возможным движением», перезаписываются следующими 4 возможными целыми целыми перемещениями, которые перезаписываются последующими ,
Таким образом, я не сохраняю все возможные действия для любого арраиста, доступного для сортировки позже.
Я пробовал , сохраняя каждую переменную отдельно в массивы int, которые будут объединены позже, но все еще перезаписываются. Пробовал создать объект игрового поля, но получил ошибку.
Выход может быть 1D или 2D arraylist.
if(Spikes[0]>=1 && Spikes[inte2]>=1 && Spikes[destination1]>=0 &&
Spikes[destination2]>=0){
c.addMoveToArray(inte1, inte2, destination1, destination2);}
public int addMoveToArray (int inte1, int inte2, int destination1, int
destination2) {
ArrayList<Integer> plist = new ArrayList<Integer>();
plist.add(inte1); plist.add(inte2); plist.add(destination1);
plist.add(destination2);
for (int i=0; i<plist.size();i++) {
System.out.println(plist);
}
Output in console
[5, 0, 8, 10]
[6, 0, 9, 11]
[7, 0, 10, 12]
[8, 0, 11, 13]
Вы использовали индексирование или '.add()', если вы использовали первый, предыдущий будет перезаписан –
Добавить еще один код и точную ошибку/исключение –
Вы создаете новый ArrayList при каждом вызове addMoveToArray, затем бросьте этот список после того, как вы распечатаете его содержимое. – FredK