Загрузить доску из строки и сохранить в двухмерном массиве - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь сохранить доску, состоящую из 1 и 0, в двумерном массиве.Я пытаюсь вернуть 3 набора из 3 значений в массив, но он говорит, что ожидается значение в csvArray [] [].

Я уже создал строку из 1 и 0 и разделил их на подстрокиразделенные "\ n"

    int[][] loadBoardfromString(string Data)
    {
        string csvBoard = "0,1,0\n2,0,1\n0,0,1";
        string[] csvArray = csvBoard.Split('\n');
        return csvArray[][];                        
    }

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Вот что вам нужно:

    string csvBoard = "0,1,0\n2,0,1\n0,0,1";
    int[][] csvArray =
        csvBoard
            .Split('\n') // { "0,1,0", "2,0,1", "0,0,1" }
            .Select(x =>
                x
                    .Split(',') // { "X", "Y", "Z" }
                    .Select(y => int.Parse(y)) // { X, Y, Z }
                    .ToArray())
            .ToArray();
0 голосов
/ 03 апреля 2019

Полагаю, это своего рода домашнее задание, поэтому я постараюсь использовать самое простое решение, чтобы учитель не знал :).

        string csvBoard = "0,1,0\n2,0,1\n0,0,1";
        // This splits the csv text into rows and each is a string
        string[] rows = csvBoard.Split('\n');
        // Need to alocate a array of the same size as your csv table 
        int[,] table = new int[3, 3];
        // It will go over each row
        for (int i = 0; i < rows.Length; i++)
        {
            // This will split the row on , and you will get string of columns
            string[] columns = rows[i].Split(',');
            for (int j = 0; j < columns.Length; j++)
            {
                //all is left is to set the value to it's location since the column contains string need to parse the values to integers
                table[i, j] = int.Parse(columns[j]);
            }
        }

        // For jagged array and some linq
        var tableJagged = csvBoard.Split('\n')
                                  .Select(row => row.Split(',')
                                                 .Select(column => int.Parse(column))
                                                 .ToArray())
                                   .ToArray();

Вот мое предложение о том, как вы должны улучшить это, чтобы вы изучили концепции. Сделайте более применимый метод, который может пролить любой случайный csv независимо от размера и вернуть двумерный массив, а не зубчатый массив. Также попробуйте разобраться со случаем, когда кто-то не помещает действительный текст CSV в качестве параметра в ваш метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...