我制作了一个ArrayList >来保存棋盘的坐标。我在输出数字时遇到麻烦。当我输出ArrayLists的大小时,它告诉我safeSquares在第一组for循环之后有64个对象,但是在“ for(ArrayList innerList:safeSquares)”行之后,innerList的大小始终为零。似乎safeSquares从未将arrayLists传递给innerList,而是尝试传递64次。

static ArrayList<ArrayList<Integer>> safeSquares = new ArrayList<ArrayList<Integer>>();
static ArrayList<Integer> squares = new ArrayList<Integer>();

for(int i = 0; i < 8; i++){
  squares.add(i);
  for(int x = 0; x < 8; x++){
    squares.add(x);
    safeSquares.add(squares);
    squares.remove(1);
  }
  squares.clear();
}

for(ArrayList<Integer> innerList : safeSquares) {
  for (Integer number : innerList) {
    System.out.println(number + " ");
  }
}

最佳答案

尝试一次遍历代码一行,并在每一行代码后写平方和safeSquares的状态。我认为您会发现自己没有实现自己的期望!

然后尝试这段代码,我不确定它到底是不是您想要的,但我认为它更接近...

ArrayList<ArrayList<ArrayList<Integer>>> safeSquares = new ArrayList<ArrayList<ArrayList<Integer>>>();

for (int i = 0; i < 8; i++) {
    ArrayList<ArrayList<Integer>> squares = new ArrayList<ArrayList<Integer>>();
    for (int x = 0; x < 8; x++) {
        ArrayList<Integer> pair = new ArrayList<Integer>();
        pair.add(x);
        pair.add(i);
        squares.add(pair);
        }
    safeSquares.add(squares);
}

for (ArrayList<ArrayList<Integer>> outlist : safeSquares) {
    for (ArrayList<Integer> inlist : outlist) {
        System.out.print(inlist);
    }
    System.out.println();
}


这是输出:

[0, 0][1, 0][2, 0][3, 0][4, 0][5, 0][6, 0][7, 0]
[0, 1][1, 1][2, 1][3, 1][4, 1][5, 1][6, 1][7, 1]
[0, 2][1, 2][2, 2][3, 2][4, 2][5, 2][6, 2][7, 2]
[0, 3][1, 3][2, 3][3, 3][4, 3][5, 3][6, 3][7, 3]
[0, 4][1, 4][2, 4][3, 4][4, 4][5, 4][6, 4][7, 4]
[0, 5][1, 5][2, 5][3, 5][4, 5][5, 5][6, 5][7, 5]
[0, 6][1, 6][2, 6][3, 6][4, 6][5, 6][6, 6][7, 6]
[0, 7][1, 7][2, 7][3, 7][4, 7][5, 7][6, 7][7, 7]

10-04 23:29