我有这个方法可以为xy数组添加temp。
public void printBoard(int temp[][],int type){
if(type == 1) {
xyArray.add(new Array(temp));
numberOfSolutionsXY++;
}
}
xyArray
是全局的,并声明为
public ArrayList<Array> xyArray = new ArrayList();
当我在退出方法printBoard
之前检查其值时,它会打印出预期的2d数组。但是当我转到另一种方法时,xyArray
的值是不同的。它具有其他Arraylist的价值。
我多次来回检查,我不只是错误输入参数。这种情况不会发生在xyArray
,其他类型的搜索结果也是如此:regArray
,xArray
和yArray
这是我查看价值的方式
System.out.println("\n xy \n"+xyArray.toString());
我做solveBoard
方法并尝试添加数组的预期值,但附加了不同的值。他们都是一样的。
problemArray.add(new Array(board));
solveBoard(board,0,0,4);
if(numberOfSolutions>0)
solutionArray.add(new ArrayList(regularArray));
solveBoard(board,0,0,3);
if(numberOfSolutionsX>0)
solutionArray.add(new ArrayList(xArray));
if(dimension%2==1){
solveBoard(board,0,0,2);
if(numberOfSolutionsY>0)
solutionArray.add(new ArrayList(yArray));
solveBoard(board,0,0,1);
if(numberOfSolutionsXY>0)
solutionArray.add(new ArrayList(xyArray));
}
solutionsArray.add(new ArrayList(solutionArray));
System.out.println("\nsolutions\n"+regularArray.toString());
所有这些都具有problemArray
的值。即使我将problemArray.add(new Array(board));
放在底部,它们仍然可以获得它的价值。
这是我做过的课程Array
public class Array {
int[][] array;
public Array(int[][] initialArray){
array = initialArray;
}
public String toString(){
String x = "";
for(int i = 0;i<array[0].length;i++){
for(int j = 0;j<array[0].length;j++)
x+=array[i][j];
x+="\n";
}
return x;
}
}
完整代码here
答案 0 :(得分:0)
尝试重命名您的&#34;数组&#34;类,例如&#34; MyArray&#34;
我认为Array类构造函数存在一些问题。 尝试将initialArray复制到您的本地变量。
公共类MyArray {
false
}