JAVA:命名数组索引

时间:2018-08-19 02:52:29

标签: java

enter image description here我正在尝试创建8x8数组,并且我知道根据Java,array [0] [0]是第一行第一列的索引。我想将其重命名为“ a1” 相似数组1 [0]为'a2'          数组[2] [0]为“ a3” 下面的代码是我想要做的,但是我不确定是否存在该语法。如果我错了,请纠正我,但是如果有机会重命名我的数组,那对我来说将变得非常容易。预先感谢。

char[][] cb;
char a=8;
char b=8;
cb= new char[a][b];
cb[0][0]=name('a1');
cb[1][0]=name('a2');
cb[2][0]=name('a3');
...
  ...
cb[5][7]=name('h6');
cb[6][7]=name('h7');
cb[7][7]=name('h8');


//Then I save some elements in each index with the new name

我已经附上了棋盘图像,得到的输入为Rf1,这意味着我的菜鸟在单元格f1处,但是在数组语言中,它的[7] [5]对吗?所以我想知道我是否可以做一些改变。

1 个答案:

答案 0 :(得分:1)

您无法做到这一点,因此代码中的变量具有这些名称,但是您可以做的是编写一个将字符串输入(例如f1)转换为所需索引的方法。基本方法是将列(ag)和行列(18)分开,然后将它们映射到行和列。在下面的(伪)代码中,我假设索引[0,0]位于左下角,对应于a1正方形。该代码假定输入是有效位置,并且不进行任何范围检查,这些操作留给您。

public static class CellIndex {
    int row;  
    int col;
    public CellIndex(int row, int col) {
        this.row = row;
        this.col = col;
    }
    // getters, etc.
}
...
public CellIndex mapPositionToIndex(String position) {
    int col = (int)(position.charAt(0) - 'a');
    int row = (int)(position.charAt(1) - '1');
    return new CellIndex(row,col);
}

CellIndex类将行/列单元格位置封装在数组中。

方法mapPositionToIndex接收带有位置指示符的字符串,并将其转换为数组索引。输入a1转换为[0,0],而h8转换为[7,7]。如果要从左上角开始,可以调整计算,但是原理是相同的。

还有许多其他方法可以解决此问题。如果您有BoardCell类来模拟电路板,则可以使用Board方法,该方法在给定位置时返回适当的Cell对象,隐藏所有内部该类用户的详细信息,即

Class Cell {
    // The model of a single cell on a chessboard
}
Class Board {
    ...
    public Cell getCell(String position) {
        // Interpret the position and return the corresponding Cell object
    }
    ...
}