Как мне преобразовать строку в 2D массив - PullRequest
0 голосов
/ 25 октября 2019

Я должен определить метод с именем 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 голосов
/ 25 октября 2019

Это рабочее динамическое решение:

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();
        }
    }
0 голосов
/ 25 октября 2019

Я думаю, что вы должны сначала разделить строки и затем столбцы. Я бы также масштабировал внешний массив с количеством расстояний.

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;
...