添加到ArrayList的最后一个对象覆盖了ArrayList中的所有元素,即使在阅读了Web上所有与问题相关的主题之后,我也无法弄清楚原因。
我每次迭代都创建新对象?并且所有字段(移动,板,颜色)都受到保护(我不能改变它,因为我使用的是棋盘框架)。
我还没有在网上找到解决方案,因为我的字段不是静态的,我还会在每次迭代后创建一个新对象。
void get_input(char **valp,int *i){
char *val = *valp;
...
val = realloc ...
*valp = val;
...
我使用这个由三个类组成的框架用于Chessboard实现: 1.棋盘:https://pastebin.com/CqgHLCXM 2.移动:https://pastebin.com/g2wr16TP 3.规则:https://pastebin.com/HEznyECY
我还重写了没有框架依赖关系的代码并且它有效..所以我猜这是一个框架问题。
框架也可用作JAR:https://ufile.io/c7n3o
public static void main(String [] args){
public String solve(String fen) {
Chessboard cb = Chessboard.getChessboardFromFEN(fen);
return solve(cb);
}
private String solve(Chessboard cb){
ArrayList<Chessboard> prioritetna = new ArrayList<>();
for(int i = 0; i < 10; i++){
cb.makeMove(cb.getMoves().get(i));
prioritetna.add(new Chessboard(cb.getBoard(), cb.getColor(),
cb.getMovesLeft()));
cb.reverseMove(cb.getMoves().get(i));
}
return "";
}
}