我正在尝试将整数数组添加到ArrayList中,但似乎每次添加新数组时,所有其他数据的内容都会被修改为与最后一个相同。
for (int a = 0; a<taille; a++) {
temp[0] = this.caseX-a;
temp[1] = this.caseY;
this.occupe.add(temp);
for ( int j = 0; j < this.occupe.size(); j++ )
System.out.println("element " + j + ": " + this.occupe.get(j)[0] );
caseX
和caseY
是两个整数,我的数组是this.occupe
。
输出结果为:
element 0: 4
element 0: 3
element 1: 3
element 0: 2
element 1: 2
element 2: 2
element 0: 1
element 1: 1
element 2: 1
element 3: 1
虽然它应该是:
element 0: 4
element 0: 4
element 1: 3
element 0: 4
element 1: 3
element 2: 2
element 0: 4
element 1: 3
element 2: 2
element 3: 1
答案 0 :(得分:2)
每次添加都使用相同的对象
您需要在occupe
List
。
因此,在每次迭代中(在循环中而不是之前)实例化temp
但实际上你可以做得更简单。您不需要引入中间变量。
你可以写一下:
this.occupe.add(new int[]{this.caseX-a, this.caseY});
未指定temp
数组的元素类型
如果需要,请更改int[]
。