【问题标题】:How to convert a String to a 2D char array JAVA [closed]如何将字符串转换为二维字符数组 JAVA [关闭]
【发布时间】:2017-07-11 21:03:43
【问题描述】:

我正在尝试将字符串转换为二维字符数组。

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

输出应该是一个二维字符数组,如下所示:

+dd+

babd

+b_a

+ddc

下面的代码是我迄今为止尝试过的。在这里,我试图获取索引 i 处的字符并将其存储在位置 [0][0] 的 2D 字符数组中,然后将下一个字符存储在位置 [0][1] 等等。

[请注意,我在循环体中添加了@param cmets,以帮助您了解每个参数存储的内容。我知道@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 但是这个方法将字符串转换为一维字符数组,这对我来说用处不大。

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

【问题讨论】:

    标签: java arrays string multidimensional-array char


    【解决方案1】:

    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 ();
    }
    

    【讨论】:

    • 看我编辑,应该修复你的输出
    • 这个应该匹配。
    【解决方案2】:

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

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

    【讨论】:

    • 你能详细说明一下吗?你是如何使用二维数组生成输出的?
    • @Ree 没有独创性,但无论如何我都赞成你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2021-01-28
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多