Arraylist的价值是出乎意料的

时间:2015-05-20 06:51:09

标签: java arrays list arraylist

我有这个方法可以为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,其他类型的搜索结果也是如此:regArrayxArrayyArray

这是我查看价值的方式 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

1 个答案:

答案 0 :(得分:0)

  1. 尝试重命名您的&#34;数组&#34;类,例如&#34; MyArray&#34;

  2. 我认为Array类构造函数存在一些问题。 尝试将initialArray复制到您的本地变量。

  3. 公共类MyArray {

    false

    }