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

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

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

Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать из файла, в котором 4 столбца и n строк, массивы так, чтобы каждый столбец был отдельным массивом для дальнейшей работы с ними. Написал вот такой код:
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]);
При попытке запуска компилятор выдает исключение FormatException на строке
 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);
}

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


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

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

14   голосов , оценка 4.357 из 5
Похожие ответы