在java中打印数组

在java中打印数组,java,arrays,Java,Arrays,首先,如果这真的很容易解决,我道歉,我还在学习。 我有一个数组字符串[][]的ArrayList,我正试图将它们全部打印出来。 当我使用下面的代码时,它只会多次打印同一块板,而不是列表中的每一块板,我看不出哪里出了问题 除非每次都被覆盖 for (int i = 0; i < Player.getBoardsAll().size(); i++) { TextIO.putln(); TextIO.put(" "); for (char a = 'A'; a &l

首先,如果这真的很容易解决,我道歉,我还在学习。 我有一个数组字符串[][]的ArrayList,我正试图将它们全部打印出来。 当我使用下面的代码时,它只会多次打印同一块板,而不是列表中的每一块板,我看不出哪里出了问题

除非每次都被覆盖

for (int i = 0; i < Player.getBoardsAll().size(); i++) {
    TextIO.putln();
    TextIO.put("   ");

    for (char a = 'A'; a < 'A' + Board.getColumns(); a++) {
        TextIO.put(a, 4);
    }

    TextIO.putln();
    TextIO.putln();

    for (int r = 0; r < Board.getRows(); r++) {
        TextIO.putf("%-3d", r+1);

        for (int c = 0; c < Board.getColumns(); c++) {
            TextIO.put(Player.getBoardsAll(i)[r][c], 4);
        }

        TextIO.putln();
        TextIO.putln();
    }
}
for(int i=0;i
这就是调用和设置上述内容的原因:

private static ArrayList<String[][]> boardsAll = new ArrayList<String[][]>();

public static void setBoardsAll(String[][] input) {
    boardsAll.add(input);
}

public static String[][] getBoardsAll(int location) {
    return Player.boardsAll.get(location);
}

public static ArrayList<String[][]> getBoardsAll() {
    return boardsAll;
}
private static ArrayList boardsAll=new ArrayList();
公共静态void setBoardsAll(字符串[][]输入){
boardsAll.add(输入);
}
公共静态字符串[][]getBoardsAll(int位置){
返回Player.boardsAll.get(位置);
}
公共静态数组列表getBoardsAll(){
返回板所有;
}

如果它总是打印相同的板,那么您可能多次将相同的板插入ArrayList。例如,您是否做过类似的事情:

String[][] board = new String[x][y];
// you inserted some data into board
setBoardsAll(board); // you added the board
// you cleared and/or re-inserted new data to
// the same board without creating another 2D array.
setBoardsAll(board);

如果执行此操作,将有一个ArrayList,其中包含同一2D数组的多个指针。如果这是问题所在,则必须为每个板创建另一个阵列。假设您创建了第一块板并将其添加到ArrayList。然后,如果编辑第一块板,ArrayList中的第一项也将被编辑,因为它们都指向同一个数组。

我怀疑您没有正确加载列表。您是否尝试过调试器?您忘记了外循环上的右括号。@BurakTutanlar在编辑中添加了右括号。也许您的原始代码中也存在此错误,但我猜在这种情况下您可能会遇到编译器错误。您是否尝试使用TextIO填充数组w/o?只是添加了我的getter和setter,当我运行完整代码时,它添加字符串[][]的次数是正确的到ArrayList,但每次只打印最后一个。这是有道理的,我认为这就是发生的事情。我想如果我使用
boardsAll.add()
它会将该状态写入其数组。那么,保存每个阵列状态的最佳方法是什么?我不想创建很多单独的数组?看起来你必须这样做。你们有很多独立的董事会吗?您是否用2D阵列表示电路板?如果行和列是常量,则2D数组是好的。如果你需要很多单独的2D阵列,你需要创建很多单独的阵列。谢谢,我想我大致知道我现在需要做什么。我正在为骑士巡演问题编写代码。我想做的是在游戏结束时打印出所有的棋盘状态,因此我尝试在每次移动后将当前棋盘状态添加到arraylist中,然后只打印最后的数组以显示给玩家。也许你可以只保存移动而不是整个棋盘。像不同的。