Чтение файла в массивы и дальнейшая работа с ними - C#
Формулировка задачи:
Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать из файла, в котором 4 столбца и n строк, массивы так, чтобы каждый столбец был отдельным массивом для дальнейшей работы с ними.
Написал вот такой код:
При попытке запуска компилятор выдает исключение FormatException на строке
и пишет
Прошу помочь и подсказать, что я делаю не так и как сделать правильно.
И еще вопрос. Правильно ли я делаю, что определяю массивы сразу во время открытия файла? Просто они в дальнейшем будут использоваться другими кнопками.
Листинг программы
- private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
- {
- OpenFileDialog OFD = new OpenFileDialog();
- OFD.DefaultExt = "*.txt";
- OFD.Filter = "TXT (*.txt*)|*.txt";
- OFD.Title = "Выберите документ для загрузки данных";
- if (OFD.ShowDialog() == DialogResult.OK)
- {
- MessageBox.Show(OFD.FileName);
- }
- string filename = OFD.FileName;
- string[] test = File.ReadAllLines(filename);
- int a = 0;
- string[] elements;
- decimal[] h = new decimal[test.Length];
- decimal[] V = new decimal[test.Length];
- decimal[] F = new decimal[test.Length];
- decimal[] t = new decimal[test.Length];
- for (a = 0; a < test.Length; a++)
- {
- elements = test[a].Replace(',','.').Split('\t');
- h[a] = Convert.ToDecimal(elements[0]);
- V[a] = Convert.ToDecimal(elements[1]);
- F[a] = Convert.ToDecimal(elements[2]);
- t[a] = Convert.ToDecimal(elements[3]);
Листинг программы
- V[a] = Convert.ToDecimal(elements[1]);
Необработанное исключение типа "System.FormatException" в mscorlib.dll
Дополнительные сведения: Входная строка имела неверный формат.
Решение задачи: «Чтение файла в массивы и дальнейшая работа с ними»
textual
Листинг программы
- string[] test = File.ReadAllLines(filename);
- decimal[] h = new decimal[test.Length];
- decimal[] V = new decimal[test.Length];
- decimal[] F = new decimal[test.Length];
- decimal[] t = new decimal[test.Length];
- var culture = CultureInfo.GetCultureInfo("ru-RU");
- for (int a = 0; a < test.Length; a++)
- {
- if (string.IsNullOrWhiteSpace(test[a])) continue;
- string[] elements = test[a].Split('\t');
- h[a] = Convert.ToDecimal(elements[0], culture);
- V[a] = Convert.ToDecimal(elements[1], culture);
- F[a] = Convert.ToDecimal(elements[2], culture);
- t[a] = Convert.ToDecimal(elements[3], culture);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д