2017-02-22 166 views
1

我想将字符串转换为2D字符数组。如何将字符串转换为2D字符数组JAVA

因此,例如,如果输入字符串是:+dd+babd+b_a+ddc

输出应该是一个二维字符数组,看起来像下面这样:

+dd+ 

babd 

+b_a 

+ddc 

下面的代码是我到目前为止已经试过。在这里,我试图获取索引为i的字符,并将其存储在位置[0] [0]处的二维char数组中,然后将其存储在位置[0] [0]处的下一个字符,依此类推。

[请注意,我在循环体中添加了@param注释,以帮助您了解每个参数的存储内容。我明白@param应该在方法头部而不是在主体中]。

public Board(String startConfig, String endConfig) { 

     int row = 4; 
     int column = 4; 
     // @param startConfig currently stores the string +dd+babd+b_a+ddc. 
     // @param endConfig is currently unused. 
     char[][] boardArray = new char[row][column]; // Creates a 4x4 board. 
     for (int i = 0; i < row; i++) { 
      for (int j = 0; j < column; j++) { 
       boardArray[i][j] = startConfig.charAt(i); 
       System.out.println(boardArray[i][j]); 
      } 
     } 
    } 

我真的被卡住了,想不出别的什么。我已经尝试使用.toCharArray,但此方法将字符串转换为一维char数组,这对我来说没有什么用处。

我想事先感谢您的时间和帮助。

回答

2

您需要为String另一个柜台偏移

int offset = 0; 
for (int i=0; i < row; i++) { 
    for (int j=0; j < column; j++) { 
     boardArray[i][j] = startConfig.charAt(offset++); 
     System.out.println(boardArray[i][j]); 
    } 
} 

或按Tim的出色答卷,偏移量可以计算为j + i*column

对于输出匹配尝试

int offset = 0; 
for (int i=0; i < row; i++) { 
    for (int j=0; j < column; j++) { 
     boardArray[i][j] = startConfig.charAt(offset++); 
     System.out.print(boardArray[i][j]); 
    } 
    System.out.println(); 
    // uncomment below line if you want a blank line 
    // System.out.println(); 
} 
+0

请看我编辑,应该修复你的输出 –

+0

这个应该匹配。 –

1

你很近,但你需要使用当前行和列来分配每个位置。在这种情况下,下面的表达式决定了当前字符的索引:

j + i*column <--- offset by this many rows 
^^^ 
current column 

for (int i=0; i < row; i++) { 
    for (int j=0; j < column; j++) { 
     boardArray[i][j] = startConfig.charAt(j + i*column); 
     System.out.println(boardArray[i][j]); 
    } 
} 
+0

你能详细说明一下吗?你如何使用二维数组来生成输出? –

+0

@Ree没有创造力,但无论如何我已经提出了你的问题。 –

相关问题