【问题标题】:How do I convert a String into a 2D array如何将字符串转换为二维数组
【发布时间】:2020-02-22 02:34:25
【问题描述】:

我必须定义一个名为 getDistance 的方法。这需要以下字符串: 0,900,1500900,0,12501500,1250,0 并返回一个包含所有距离的二维数组。距离用“”符号分隔,每列用“,”分隔。

我知道我需要使用 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;

【问题讨论】:

  • 尝试先用&lt;&gt;分割,然后再用,分割

标签: java string loops multidimensional-array


【解决方案1】:

我认为您应该首先沿行拆分,然后再按列拆分。我也会用距离的数量来缩放外部数组。

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;

【讨论】:

    【解决方案2】:

    这是一个有效的动态解决方案:

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

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多