2016-09-07 3 views
-2

Это может быть полезно любому, кто пытается динамически заполнить 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] 
+1

Вы использовали индексирование или '.add()', если вы использовали первый, предыдущий будет перезаписан –

+0

Добавить еще один код и точную ошибку/исключение –

+1

Вы создаете новый ArrayList при каждом вызове addMoveToArray, затем бросьте этот список после того, как вы распечатаете его содержимое. – FredK

ответ

0

Вы могли бы рассмотреть вопрос о создании класса Move, где каждый экземпляр содержит два «от» индексов и два «в» индексы, а затем добавить экземпляры Move в ArrayList. Затем, когда вы сделаете переход, очистите список массивов, чтобы начать с нового набора возможных ходов.

Смежные вопросы