我正在编写游戏代码。该游戏板的尺寸为10x10。一开始,我将此板编写为二维整数数组。现在,我必须用字母替换黑板上的某些位置。根据玩家输入的坐标,字母会改变。
private static int[][] board = new int[10][10]; //board
StringBuilder sb = new StringBuilder();
for (int[] array : board) {
sb.append('\n').append(Arrays.toString(array));
}
String new = sb.toString(); //I tried to convert this way
if (new[x][y].equals("r")){
new[x][y] = "d"; //I'm getting an error in this part.
}
答案 0 :(得分:0)
我建议您不要使用int
作为数组数据类型。也许使用String
,并且可以使用Integer.parseInt(x)
从数组项中提取整数。如果您的数字是个位数,则使用char
是更好的选择。
如果要这样做,则必须执行许多String操作,并且必须使用String存储整个电路板。您可能需要阅读this post来帮助您像2D数组一样索引字符串。
答案 1 :(得分:0)
尝试通过从2D int数组复制数据来使用2D String数组。
int[][] board = new int[10][10]; //board
//Converting int array to String array
String[][] s = new String[board.length][];
for(int i = 0; i < board.length; i++){
s[i] = new String[board[i].length];
for(int j=0; j<board[i].length; j++){
s[i][j] = Integer.toString(board[i][j]);
}
}
if (s[x][y].equals("r")){
s[x][y] = "d";
}
答案 2 :(得分:0)
您的代码中存在两个主要问题:
new
作为不允许使用的变量的名称,因为new
是一个保留字,用于实例化。以下语句不会生成二维字符串数组:
String s = sb.toString();
因此,您尝试访问/设置s[x][y]
会导致编译错误。
建议:
String[][]
代替int[][]
。 String[][]
将能够存储由字母组成的字符串以及表示为字符串的整数(如果需要,您可以始终使用Integer::parseInt
将其解析为相应的整数)。 / li>
创建另一个String[][]
类型的数组,并将int[][]
数组的元素复制到其中。
我会和前一个一起去。