2016-09-07 42 views
-2

這可能有利於任何試圖動態填充ArrayList的人。輸出覆蓋之前保存在ArrayList中的變量

Spikes[]是代表遊戲板的數組。

下面是一個條件語句。

if(Spikes[inte1]>=1 && Spikes[inte2]>=1 && Spikes[destination1]>=0 && Spikes[destination2]>=0){ 

inte1和inte2是int代表片段的初始位置。 destination1和destination2是代表初始位置+骰子滾動的整數;

由於Spikes是一款遊戲板,許多初始位置+骰子滾動許多不同的目的地都可以滿足條件。

如果滿足條件,可以生成許多可能的移動。

當我將可能的移動保存到ArrayList時,我的問題是(如果滿足條件),第一個'可能的移動'生成的4個整數被後面4個可能的移動整數覆蓋, 。

因此,我不保存所有可能的移動到任何可用於稍後排序的數組列表。

我試過 將每個變量分別保存到int數組中以便後來合併,但仍然覆蓋。 嘗試創建一個遊戲板對象,但出現錯誤。

輸出可以是一維或二維數組列表。

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

您是否使用索引或'。新增()',如果你使用的第一,以前的將被覆蓋 –

+0

添加一些更多的代碼和 –

+1

您正在創建一個新的ArrayList每次確切的錯誤/異常調用addMoveToArray,然後在打印其內容後將該列表扔掉 – FredK

回答

0

您可能會考慮創建一個Move類,其中每個實例包含兩個「from」索引和兩個「to」索引,然後將Move實例添加到ArrayList。然後當你做出一個動作時,清除數組列表,這樣你就可以重新開始一組新的可能動作。