Chiffa_

Чтение строк из текстового файла, присваивание значений строкам класса

29.05.2012, 17:01. Показов 4040. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать базу данных и занести в нее информацию из текстового файла, заполненного строками вида:
[Название изотопа] [период полураспада] [+] [степень 10] [hours/days/years]
например:
Be-7 53,3 days
C-14 5,73 + 03 years
Класс, использующийся в программе
C#
1
2
3
4
5
6
class Isotop
{
    public string name_of_isotop;
    public double period; // период полураспада
    public string time; // время периода полураспада - hours, days, years
}
Фрагмент кода, в котором вылетает ошибка
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
26
StreamReader file = new StreamReader("database.txt");
int k = 0;
string line;
Isotop[] data = new Isotop[100]; // база данных по изотопам
 
// читаем файл построчно
// и заполняем базу данных по изотопам
while ((line = file.ReadLine()) != null)
{
     string[] temp = line.Split(' ');
     data[k].name_of_isotop = temp[0];
     if (temp[2] != "+")
     {
         data[k].period = double.Parse(temp[1]);
         data[k].time = temp[2];
     }
     else
     {
         data[k].period = double.Parse(temp[1]);
         int tempow = int.Parse(temp[3]);
         data[k].period *= Math.Pow(10,tempow);
         data[k].time = temp[4];
     }
     Console.WriteLine("Название изотопа: {0,8} Период полураспада: {1,6:f4}", data[k].name_of_isotop, data[k].period);
     k++;
}
Выдает ошибку в консоли:
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at "название программы и номер строки, содержащей
data[k].name_of_isotop = temp[0];


Что это такое и как с этим бороться?
Пробовала комментировать все строки с присваиванием строк temp строкам data, тогда выдает аналогичную ошибку, но строку указывает
StreamReader file = new StreamReader("database.txt");
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2012, 17:01
Ответы с готовыми решениями:

Чтение текстового файла по строкам и вывод строк, которые содержат повторяющиеся слова
Разработайте программу, которая читает текстовый файл по строкам и выводит на экран строки, которые содержат повторяющиеся слова

Чтение по строкам из текстового файла
Как взять каждую строку из файла и присвоить каждой свою переменную? Содержание файла: intro 80 4 114 76

Макрос для загрузки значений из текстового файла по строкам
Подскажите макрос для загрузки значений из текстового файла по строкам, т.е. допустим есть текстовый файл, где находятся значения ...

4
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
29.05.2012, 19:08
1.Конструкцию
C#
1
2
3
while ((line = file.ReadLine()) != null)
}
}
лучше заменить на
C#
1
2
3
4
while (file.Peek() != -1)
{
    line = file.ReadLine();
}
Вот так попробуй

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
26
27
28
29
30
31
32
33
34
using (StreamReader file = new StreamReader("database.txt"))
{
    string line;
    Isotop[] datas = new Isotop[100]; // база данных по изотопам
 
    // читаем файл построчно
    // и заполняем базу данных по изотопам
    while (file.Peek() != -1)
    {
        line = file.ReadLine();
        if (string.IsNullOrWhiteSpace(line))
            continue;
 
        Isotop isotop = new Isotop();
 
        string[] temp = line.Split(' ');
        isotop.name_of_isotop = temp[0];
        if (temp[2] != "+")
        {
            isotop.period = double.Parse(temp[1]);
            isotop.time = temp[2];
        }
        else
        {
            isotop.period = double.Parse(temp[1]);
            int tempow = int.Parse(temp[3]);
            isotop.period *= Math.Pow(10,tempow);
            isotop.time = temp[4];
        }
        Console.WriteLine("Название изотопа: {0,8} Период полураспада: {1,6:f4}", isotop.name_of_isotop, isotop.period);
 
        datas.Add(isotop);
    }
}
1
Chiffa_
29.05.2012, 22:26
Heisenberg, спасибо большое!
Несколько вопросов:
1. Останется ли доступ к datas после выхода из using? Просто здесь только кусок кода, являющийся частью большей программы, и нужно, чтобы дальше можно было воспользоваться базой данных.
2. Компилятор ругается на строчку
C#
1
datas.Add(isotop)
Error 3 'System.Array' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)
Но последнее я просто заменю другой конструкцией, не вопрос.

Добавлено через 1 час 15 минут
Heisenberg, спасибо еще раз, вопросы уже не актуальны, со всеми разобралась.)
10 / 13 / 1
Регистрация: 16.07.2020
Сообщений: 137
Записей в блоге: 1
16.07.2020, 09:13
Chiffa_, в конце кода после k++ не хватает закрытой квадратной скобки ]
0
Эксперт .NET
 Аватар для Usaga
14320 / 9409 / 1356
Регистрация: 21.01.2016
Сообщений: 35,474
16.07.2020, 09:20
Toz Pipe, я думаю, что за восемь лет он сам разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2020, 09:20
Помогаю со студенческими работами здесь

Чтение строк из текстового файла
Помогите с кодом! Имеется текстовый файл, в к-ом построчно идут вопрос, 4 варианта ответов, следующий вопрос, 4 варианты ответов и т.д....

Чтение и анализирование строк из текстового файла
Делаю программу, нужна помощь. Суть программы в том, что она в текстовом файле, где в строке написано Имя, Пол и Рост, искала Мужчину с...

Чтение строк из текстового файла в memo
Привет. Как сделать чтобы при чтении строк из файла такого вида: 123 456,78 789 12,5 987 654 321 98,8 они записывались в memo...

Чтение первых 10-и строк из текстового файла
Доброго времени суток. В папке "Documents" (документы) есть папка с названием "wasd", а в папке файл, в котором нужно прочитать первые 10...

Чтение последних 100 строк из текстового файла
Нужно реализоваться сабж. Размеры файлов в пределах 40-100мб. Прога должна через указанный промежуток времени открывать файл и...


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

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

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru