keeponfalling12 Ответов: 2

Как назначить строку столбцам массива после метода split


У меня есть многомерный массив, который принимает строки на основе пользовательского ввода типа(n строк/4col), и у меня есть строка из 4 чисел в строке, разделенной 1 пробелом: 10.00 20.00 30.00 40.00. Мне нужно присвоить каждому номеру столбец в 1 строке. Код, который у меня есть до сих пор:

Что я уже пробовал:

int storeNumbers = int.Parse(Console.ReadLine());

      string[,] storesemesterProfit = new string[storeNumbers, 4];

      for(int m=0; m<storeNumbers; m++)
      {
          for(int n=0; n < 4; n++)
          {

             string inputData = Console.ReadLine()
             string [] numb = inputData.Split(' ');
             storesemesterProfit[m, n] = numb ; // i need help here

2 Ответов

Рейтинг:
1

Richard MacCutchan

Вы разделяете строку для каждого числа, которое не является необходимым. Разделите строку, а затем добавьте каждый элемент в свой массив. Вам также необходимо определить, на какой элемент раскола вы ссылаетесь:

for(int m=0; m<storeNumbers; m++)
{
    string inputData = Console.ReadLine();
    string [] numb = inputData.Split(' '); // split the string
    for(int n=0; n < 4; n++) // for each field of the string
    {
        storesemesterProfit[m, n] = numb[n] ; // add the next field to the array
    }
}


Рейтинг:
0

OriginalGriff

Первое, что нужно сделать, это подумать о том, что вы пытаетесь сделать: вместо того, чтобы создавать 3D-массив с фиксированными размерами и заставлять пользователя вводить счетчик, вместо этого рассмотрите список, чтобы он мог расширяться по мере необходимости:

List<string[]> storeSemesterProfit = new List<string[]>();

Затем пусть пользователь вводит данные util он иссякнет и его легко хранить:
string storeData = Console.ReadLine();
while (!string.IsNullOrWhiteSpace(storeData))
    {
    storeSemesterProfit.Add(storeData.Split(' '));
    storeData = Console.ReadLine();
    }
Еще лучше было бы преобразовать строки в реальные числа на этом этапе, так как это легко заставить пользователя исправить свои опечатки:
List<decimal[]> storeSemesterProfit = new List<decimal[]>();
string storeData = Console.ReadLine();
while (!string.IsNullOrWhiteSpace(storeData))
    {
    string[] parts = storeData.Split(' ');
    decimal[] profits = new decimal[parts.Length];
    bool ok = true;
    for (int i = 0; i < parts.Length; i++)
        {
        decimal value;
        if (!decimal.TryParse(parts[i], out value))
            {
            Console.WriteLine($"{parts[i]} is not a number: line ignored, please reenter");
            ok = false;
            break;
            }
        profits[i] = value;
        }
    if (ok)
        {
        storeSemesterProfit.Add(profits);
        }
    storeData = Console.ReadLine();
    }