输出覆盖以前在ArrayList中保存的变量

时间:2016-09-07 20:03:47

标签: java arrays arraylist

这对尝试动态填充ArrayList的任何人都有好处。

Spikes[]是表示游戏板的数组。

Beneath是一个条件语句。

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

inte1和inte2是int表示一块的初始位置。 destination1和destination2是表示初始位置+骰子滚动的整数;

由于Spikes是一个游戏板,许多初始位置可以满足条件+骰子滚动这么多不同的目的地。

如果满足条件,可以生成许多可能的移动。

我的问题是(如果满足条件)当我将可能的移动保存到ArrayList时,由第一个'可能的移动'生成的4个整数被后续覆盖的下4个可能的移动整数覆盖。

因此,我没有将所有可能的动作保存到以后可用于排序的任何arraylist。

我试过了 将每个变量分别保存到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 个答案:

答案 0 :(得分:0)

您可以考虑创建一个Move类,其中每个实例包含两个“from”索引和两个“to”索引,然后将Move的实例添加到ArrayList。然后,当您进行移动时,清除阵列列表,以便您可以使用一组新的可能移动重新开始。