Java 二维数组转换(整数到字符串)

Java 二维数组转换(整数到字符串),java,arrays,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.

我正在写一个游戏代码。这个游戏的棋盘是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.
}

我建议您不要使用
int
作为数组数据类型。可能使用
字符串
,您可以使用
Integer.parseInt(x)
从数组项中提取整数。如果您的数字是个位数,那么使用
char
将是一个更好的选择


如果你想这样做,你必须做很多字符串操作,你必须用一个字符串来存储你的整个电路板。您可能希望通过读取来帮助索引类似2D数组的字符串。

通过从2D int数组复制数据,尝试使用2D字符串数组

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"; 
}
int[]board=newint[10][10]//板
//将int数组转换为字符串数组
字符串[][]s=新字符串[board.length][];
对于(int i=0;i对于(int j=0;j,代码中有两个主要问题:

  • 您使用了
    new
    作为变量名,这是不允许的,因为
    new
    是一个保留字,用于实例化
  • 以下语句不生成字符串的二维数组:

    String s = sb.toString();
    
    因此,尝试访问/设置
    s[x][y]
    将导致编译错误

  • 建议:

  • 使用
    String[][]]
    而不是
    int[][]
    String[][][]
    将能够存储由字母组成的字符串以及表示为字符串的整数(如果需要,您可以始终使用
    integer::parseInt
    解析为相应的整数)
  • 创建另一个类型为
    String[][]
    的数组,并将
    int[][]
    数组的元素复制到该数组中

    我会选择前者


  • 为什么不从一开始就使用字符串数组?因此,在第一行中,您将使用私有静态字符串[][]board=new String[10][10];然后您必须相应地更改其他类型的方法“new”字符串变量不是二维数组。因此,我们不能像使用[x][y]更改整数2d数组那样更改值。无法使用java关键字作为变量,为什么在数组中存储数值时要检查alpha?@anon请尝试使用2D字符串数组复制2D int数组板数据。如我的回答所示。