2D数组转换(整数到字符串)

时间:2020-05-31 09:05:26

标签: java arrays

我正在编写游戏代码。该游戏板的尺寸为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.
}

3 个答案:

答案 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)

您的代码中存在两个主要问题:

  1. 您已经使用new作为不允许使用的变量的名称,因为new是一个保留字,用于实例化。
  2. 以下语句不会生成二维字符串数组:

    String s = sb.toString();
    

    因此,您尝试访问/设置s[x][y]会导致编译错误。

建议:

  1. 使用String[][]代替int[][]String[][]将能够存储由字母组成的字符串以及表示为字符串的整数(如果需要,您可以始终使用Integer::parseInt将其解析为相应的整数)。 / li>
  2. 创建另一个String[][]类型的数组,并将int[][]数组的元素复制到其中。

    我会和前一个一起去。

相关问题