【问题标题】:How to increment the index of an object in an ArrayList如何增加 ArrayList 中对象的索引
【发布时间】:2014-11-04 02:57:32
【问题描述】:

我最近刚刚学习了 java,并且正在使用 2d ArrayList 自己实现骑士之旅问题。我不知道这是否可能,但有没有办法增加 2d ArrayList 中对象的索引?还是其他类型的数组?

在这里我将我的马初始化为 1,并将 board[0][0] 设置为我的马。

int knight = 1;

board[0][0].add(knight); // board[0][0] is now 1

所以现在我的马现在在棋盘的左上角(即board[0][0]) 现在我想做这样的事情board[0]+=1[0]+=2 = knight 将我的骑士位置设置为board[1][2],但我不知道该怎么做。 我想以某种方式做到这一点,以便当我的骑士在不同的方格上时它仍然可以工作。

这是我的棋盘类:

public class ChessBoard {

ArrayList[][] board;

public ChessBoard() {
    this.board = new ArrayList[8][8];
    board[0][0] = new ArrayList();
    board[1][0] = new ArrayList();
    board[2][0] = new ArrayList();
    board[3][0] = new ArrayList();
    board[4][0] = new ArrayList();
    board[5][0] = new ArrayList();
    board[6][0] = new ArrayList();
    board[7][0] = new ArrayList();
}

任何帮助将不胜感激!

【问题讨论】:

  • board[0][0] = 0; board[1][2] = knight;.
  • 最令人困惑的语法 ArrayList[][] board;
  • 为什么不int[][] board

标签: java arraylist indexing


【解决方案1】:

你当然可以像这样声明一个二维字符串数组:

String [][] board = new String [8][8];

但是为什么不创建一个板类:

public class Board {
    private int x;
    private int y;

    public void incrementX () {
        x++;
    }
    ...
}

或者类似的?

【讨论】:

  • 感谢您的建议。我认为这将更像我想要的。
  • 我不会这样做,因为棋盘实际上并没有移动,你希望你的骑士改变位置,而不是棋盘。
  • @luisdurazoa 这是一个公平的观点 - 如果问题是如何开发国际象棋游戏,我会同意你的看法。但是,由于它围绕着骑士的巡回赛问题,传统上不是通过蛮力解决,而是通过其他方法解决,例如分而治之,这会改变棋盘的大小。我不是为骑士建模,而是为棋盘建模。
  • 我会马上尝试这个问题,我试图模拟一个真正的棋盘,然后意识到这是完全不同的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2018-08-07
  • 2020-12-14
  • 1970-01-01
  • 2021-12-06
  • 2023-03-03
相关资源
最近更新 更多