Преобразовать строку в 2D-массив в C # - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время я получаю данные с клиентского компьютера в форме строки, но я хочу, чтобы они были в виде двумерного массива [25,3].Поэтому я сначала разбил его на один массив, а затем попытался разбить этот массив на 2D-массив.Однако когда я запускаю код, я вижу пустой массив, кто-нибудь знает почему?

private void ClientReceiveData(object sender, ConnectedClient.NetDataEventArgs e)
{
    if (string.IsNullOrEmpty(e.Message) == false)
    {
        if (e.ID == 0)
        {
            result = Array.ConvertAll(e.Message.Split(new[] { ',', }, StringSplitOptions.RemoveEmptyEntries), Double.Parse);
            for (int i = 0; i < result.Length; i++)
            {

                resultarray2D[i % 3, i % 3] = result[i];
                Trace.WriteLine(resultarray2D);
            }
        }

        if (e.ID == 1)
        {
            answer = Array.ConvertAll(e.Message.Split(new[] { ',', }, StringSplitOptions.RemoveEmptyEntries), Double.Parse); 
            for (int i = 0; i < answer.Length; i++)
            {
                answerarray2D[i % 3, i / 3] = answer[i];
                Trace.WriteLine(answerarray2D);
            }
        }

Выход: Output

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Это должно сработать (я внес некоторые изменения в сказанное выше и внедрил это в ваш код):

if (string.IsNullOrEmpty(e.Message) == false)
        {

            if (e.ID == 0)
            {
                result = Array.ConvertAll(e.Message.Split(new[] { ',', }, StringSplitOptions.RemoveEmptyEntries), Double.Parse);


                for (int x = 0; x < result.Length; x++)
                {

                    resultarray2D[x / 3, x % 3] = result[x];
                }
                int rowLength = resultarray2D.GetLength(0);
                int colLength = resultarray2D.GetLength(1);

                for (int i = 0; i < rowLength; i++)
                {
                    for (int j = 0; j < colLength; j++)
                    {
                        Trace.WriteLine(string.Format("{0} ", resultarray2D[i, j]));
                    }
                     Trace.WriteLine("\n");
                }

            }
0 голосов
/ 11 октября 2018

Я продолжаю видеть пустой массив

Нет, вы видите, какой вывод по умолчанию ToString для массива, который является именем класса.Если вы хотите просмотреть содержимое массива, вам необходимо выполнить цикл и вывести отдельные элементы:

int rowLength = arr.GetLength(0);
int colLength = arr.GetLength(1);

for (int i = 0; i < rowLength; i++)
{
    for (int j = 0; j < colLength; j++)
    {
        Console.Write(string.Format("{0} ", arr[i, j]));
    }
    Console.WriteLine();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...