2 回答
TA贡献1851条经验 获得超4个赞
问题似乎出现在创建中:您可能为每一行使用相同的列 ArrayList 对象。
// Error:
ArrayList<String> row = new ArrrayList<>();
row.add("...");
row.add("...");
row.add("...");
for (int i = 0; i < 3; ++i) {
board.add(row);
}
本来应该:
for (int i = 0; i < 3; ++i) {
ArrayList<String> row = new ArrrayList<>();
row.add("...");
row.add("...");
row.add("...");
board.add(row);
}
同样的概念错误意味着:不需要这样做:
board.set(2, updateRow); // Not needed.
更改板持有的 updateRow 对象中的条目是通过引用完成的。
一些技巧:
这里可以使用
String[][]
.将显示/视图(字符串)与数据模型(字符?)分开更容易,所以也许
char[][] board = new char[3][3];
TA贡献2051条经验 获得超10个赞
我已经使用了您的代码并添加了显示功能,它给了我预期的输出。我想您可能需要检查显示功能或创建板的方式。下面是我使用的显示功能
public static String display(ArrayList<ArrayList<String>> board) {
String output = "";
for(ArrayList<String> list : board) {
for(String s:list){
output += s ;
}
output += "\n";
}
return output;
}
添加回答
举报