我正在尝试将字符串转换为2D字符数组。
例如,如果输入字符串是:+dd+babd+b_a+ddc
输出应该是2D char数组,如下所示:
+dd+
babd
+b_a
+ddc
以下代码是我到目前为止所尝试的。在这里,我试图获取索引i处的字符并将其存储在位置[0] [0]的2D字符数组中,然后存储在位置[0] [1]的下一个字符,依此类推。
[请注意,我在循环体中添加了@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,但是这个方法将字符串转换为1D char数组,这对我来说没什么用。
我想提前感谢您的时间和帮助。
答案 0 :(得分: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 ();
}
答案 1 :(得分: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]);
}
}