0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 2
1

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

16.05.2016, 10:31. Показов 782. Ответов 2
Метки нет (Все метки)

Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать из файла, в котором 4 столбца и n строк, массивы так, чтобы каждый столбец был отдельным массивом для дальнейшей работы с ними.
Написал вот такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 на строке
C#
1
 V[a] = Convert.ToDecimal(elements[1]);
и пишет
Необработанное исключение типа "System.FormatException" в mscorlib.dll

Дополнительные сведения: Входная строка имела неверный формат.
Прошу помочь и подсказать, что я делаю не так и как сделать правильно.
И еще вопрос. Правильно ли я делаю, что определяю массивы сразу во время открытия файла? Просто они в дальнейшем будут использоваться другими кнопками.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2016, 10:31
Ответы с готовыми решениями:

Ввод данных и дальнейшая работа с ними
На ввод поступают данные в виде: слово1:слово2 слово3:слово4 слово5:слово6 ... (количество...

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

Поиск в файле нужных листов и дальнейшая работа с ними
Добрый вечер! Недавно занялась осваивать макросы и столкнулась со следующей проблемой: Нужно...

Чтение данных из файла и работа с ними
Может ли кто нибудь помочь? Нужно в Visual Studio 2010 написать программу, которая будет из файла...

2
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 2
16.05.2016, 10:46  [ТС] 2
Забыл прикрепить файл, из которого читаю данные.
Вложения
Тип файла: rar Массив данных1.rar (3.3 Кб, 3 просмотров)
0
Администратор
Эксперт .NET
15092 / 12160 / 4870
Регистрация: 17.03.2014
Сообщений: 24,628
Записей в блоге: 1
16.05.2016, 13:29 3
noztail, во-первых, при пребразовании из строки следует явно указать культуру. Раз ты заменяешь запятую на точку, то можно использовать CultureInfo.InvariantCulture. Еще лучше убрать ненужный Replace и использовать культуру ru-RU. Во-вторых, в файле есть пустые строки и их нужно пропускать.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2016, 13:29
Помогаю со студенческими работами здесь

Чтение строк с файла и работа с ними
Есть файл. В нём строки. Требуется проверить существует ли файл. Сделал такой блок string...

Как считать данные из поля ввода и дальнейшая работа с ними
Мне нужно считать данные из поля (Несколько строк), а также из переключателя (Radiobutton) from...

Чтение из файла и дальнейшая обработка данных
Начал потихоньку думать над решением практической задачи. Существует даталоггер. Он пишет на флешку...

Работа с текстом из файла и дальнейшая его обработка
Здрасте! Недавно выдали задание для курсовой работы: - обеспечить возможность ввода текста из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru