Чтение файла в массивы и дальнейшая работа с ними - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать из файла, в котором 4 столбца и n строк, массивы так, чтобы каждый столбец был отдельным массивом для дальнейшей работы с ними. Написал вот такой код:
Листинг программы
  1. private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
  2. {
  3. OpenFileDialog OFD = new OpenFileDialog();
  4. OFD.DefaultExt = "*.txt";
  5. OFD.Filter = "TXT (*.txt*)|*.txt";
  6. OFD.Title = "Выберите документ для загрузки данных";
  7. if (OFD.ShowDialog() == DialogResult.OK)
  8. {
  9. MessageBox.Show(OFD.FileName);
  10. }
  11. string filename = OFD.FileName;
  12. string[] test = File.ReadAllLines(filename);
  13. int a = 0;
  14. string[] elements;
  15. decimal[] h = new decimal[test.Length];
  16. decimal[] V = new decimal[test.Length];
  17. decimal[] F = new decimal[test.Length];
  18. decimal[] t = new decimal[test.Length];
  19. for (a = 0; a < test.Length; a++)
  20. {
  21. elements = test[a].Replace(',','.').Split('\t');
  22. h[a] = Convert.ToDecimal(elements[0]);
  23. V[a] = Convert.ToDecimal(elements[1]);
  24. F[a] = Convert.ToDecimal(elements[2]);
  25. t[a] = Convert.ToDecimal(elements[3]);
При попытке запуска компилятор выдает исключение FormatException на строке
Листинг программы
  1. V[a] = Convert.ToDecimal(elements[1]);
и пишет
Необработанное исключение типа "System.FormatException" в mscorlib.dll Дополнительные сведения: Входная строка имела неверный формат.
Прошу помочь и подсказать, что я делаю не так и как сделать правильно. И еще вопрос. Правильно ли я делаю, что определяю массивы сразу во время открытия файла? Просто они в дальнейшем будут использоваться другими кнопками.

Решение задачи: «Чтение файла в массивы и дальнейшая работа с ними»

textual
Листинг программы
  1. string[] test = File.ReadAllLines(filename);
  2. decimal[] h = new decimal[test.Length];
  3. decimal[] V = new decimal[test.Length];
  4. decimal[] F = new decimal[test.Length];
  5. decimal[] t = new decimal[test.Length];
  6. var culture = CultureInfo.GetCultureInfo("ru-RU");
  7. for (int a = 0; a < test.Length; a++)
  8. {
  9.     if (string.IsNullOrWhiteSpace(test[a])) continue;
  10.    
  11.     string[] elements = test[a].Split('\t');
  12.     h[a] = Convert.ToDecimal(elements[0], culture);
  13.     V[a] = Convert.ToDecimal(elements[1], culture);
  14.     F[a] = Convert.ToDecimal(elements[2], culture);
  15.     t[a] = Convert.ToDecimal(elements[3], culture);
  16. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы