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]对吗?所以我想知道我是否可以做一些改变。
答案 0 :(得分:1)
您无法做到这一点,因此代码中的变量具有这些名称,但是您可以做的是编写一个将字符串输入(例如f1
)转换为所需索引的方法。基本方法是将列(a
至g
)和行列(1
至8
)分开,然后将它们映射到行和列。在下面的(伪)代码中,我假设索引[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]
。如果要从左上角开始,可以调整计算,但是原理是相同的。
还有许多其他方法可以解决此问题。如果您有Board
和Cell
类来模拟电路板,则可以使用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
}
...
}