如何将字符串转换为2D数组

时间:2019-10-25 18:07:27

标签: java string loops multidimensional-array

我必须定义一个名为getDistance的方法。这需要以下字符串: 0,900,1500 <> 900,0,1250 <> 1500,1250,0并返回具有所有距离的2d数组。距离用“ <>”符号分隔,并且用“,”分隔为每一列。

我知道我需要使用String.split方法。我知道用逗号分割会给我列,而用“ <>”分割会给我行。

   public static int[][] getDistance(String array) {
        String[]row= array.split(",");
        String[][] distance;
        int[][] ctyCoord = new int[3][3];
        for (int k = 0; k < row.length; k++) {
            distance[k][]=row[k].split("<>");
                ctyCoord[k][j] = Integer.parseInt(str[j]);
            }
        return ctyCoord;

2 个答案:

答案 0 :(得分:0)

我认为您应该首先按行拆分,然后再对列进行拆分。我还将根据距离的数量来缩放外部数组。

public static int[][] getDistance(String array) {
    String[] rows = array.split("<>");
    int[][] out = new int[rows.length][3];
    for (int i = 0; i < rows.length, i++) {
        String values = rows[i].split(",");
        for (int j = 0; j < 3, j++) {
            out[i][j] = Integer.valueOf(values[j]);
        }
    }
    return out;

答案 1 :(得分:0)

这是一个可行的动态解决方案:

public static int[][] getDistance(String array) {

        String[] rows = array.split("<>");
        int[][] _2d = null;

        // let us take the column size now, because we already got the row size
        if (rows.length > 0) {
            String[] cols = rows[0].split(",");
            _2d = new int[rows.length][cols.length];
        }

        for (int i = 0; i < rows.length; i++) {
            String[] cols = rows[i].split(",");
            for (int j = 0; j < cols.length; j++) {
                _2d[i][j] = Integer.parseInt(cols[j]);
            }
        }
        return _2d;

    }

让我们测试一下:

public static void main(String[] args) {
        String given = "0,900,1500<>900,0,1250<>1500,1250,0";

        int[][] ok = getDistance(given);
        for (int i = 0; i < ok.length; i++) {
            for (int j = 0; j < ok[0].length; j++) {
                int k = ok[i][j];
                System.out.print(k + " ");
            }
            System.out.println();
        }
    }