如何将String转换为2D char数组JAVA

时间:2017-02-22 01:07:27

标签: java arrays string multidimensional-array char

我正在尝试将字符串转换为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数组,这对我来说没什么用。

我想提前感谢您的时间和帮助。

2 个答案:

答案 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]);
    }
}