Чтение файла в массивы и дальнейшая работа с ними - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д