1 / 1 / 1
Регистрация: 08.12.2014
Сообщений: 62

Как создавать объекты на основе считанной инфы из текстового файла

12.11.2015, 16:17. Показов 2590. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, столкнулся с такой проблемой:
Как создавать на основе считанных данных объект?
Тут я узнал имя объекта и его второе поле, которое может быть разных типов( string, float или enum)
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            StreamReader fs2 = new StreamReader(@"E:/input.txt");
            while (true)
            {
                string temp = fs2.ReadLine();
                int i = 0;
                do
                {
                    if (temp != null) _name += temp[i];
                    i++;
                } while (temp != null && temp[i] != char.Parse(","));
                do
                {
                    if (temp != null) _second += temp[i];
                    i++;
                } while (temp != null && temp[i] != char.Parse("|"));
 
                if (fs2.ReadLine()== null) break;
            }

В переменной _name хранится имя объекта, а в переменной _second зн-е его второго поля.
Есть класс Сonstruction, в котором есть поле Name и от него наследуются три класса ReligiousConstr, GovernmentСonstr, CivilСonstr (у них есть свои поля: Конфесия, Страна и Высота)
А вот как хранятся данные в текстовом файле
Кликните здесь для просмотра всего текста
Эмпайр-стейт-билдинг, 443.2 |
Собор Василия Блаженного, Христианство |
Дом Правительства Российской Федерации, Россия |
Белый дом, США

Так вот собственно вопрос, как создать n-ое кол-во объектов и каждый отнести к своему классу?

Заранее благодарю, хотя бы за ответ который направит на верный путь, вообще кажется, что считываю данные каким-то инвалидным способом. Может быть я вовсе не правильно выстроил архитектуру.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2015, 16:17
Ответы с готовыми решениями:

Присвоить переменной значение, являющееся целой строкой, считанной из текстового файла
День добрый всем:) Есть небольшой код: for /f "UsebackQ skip=%a%" %%A IN ("keyPS.txt") do (set "keyPS=%%~A" && goto...

Как создавать объекты из XML файла, если каких то атрибутов может не быть?
Создаю объекты из XML файла: List<Terminal> terminals = new List<Terminal>(); foreach (XmlNode terminal in...

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

5
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9649 / 4802 / 762
Регистрация: 17.04.2012
Сообщений: 9,638
Записей в блоге: 14
12.11.2015, 16:40
SMOuk24, формат текстового файла изменять нельзя? А так бы сериализация подошла для такого случая. Любая: XML, SOAP, JSON, бинарная...
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
12.11.2015, 16:49
Цитата Сообщение от SMOuk24 Посмотреть сообщение
Собор Василия Блаженного, Христианство |
Дом Правительства Российской Федерации, Россия |
Ничем эти две строки не отличаются. Через проверку типов определить ReligiousConstr или GovernmentСonstr не получится. Но количество религий/конфессий небольшое, поэтому можно их перечислить и проверять по нахождению 2-й части строки в этом перечислении/массиве.
0
1 / 1 / 1
Регистрация: 08.12.2014
Сообщений: 62
12.11.2015, 17:05  [ТС]
Даценд, Да, забыл сказать, что использую перечисляемый тип для конфесий
C#
1
2
3
4
5
6
7
8
9
10
    public class ReligiousConstr: Сonstruction
    {
        public enum Denomination
        {
            Christianity,
            Judaism,
            Islam,
            Other
        }
    }
Но не особо понятно, как проверять, что зн-е строки совпадает с перечисленными там конфессиями или как?

Добавлено через 30 секунд
tezaurismosis, К сожалению нет, только формат txt

Добавлено через 7 минут
Вот так создавал объект класса, но надо же заранее определить по _second, объект какого класса создавать,
кол-во объектов, думаю, можно вычислить по кол-ву знаков "|", использую очередь, потому что таковы требования
C#
1
queue.Enqueue(new CivilСonstr {Name = _name, Height = float.Parse(_second)});
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
12.11.2015, 17:23
Лучший ответ Сообщение было отмечено SMOuk24 как решение

Решение

SMOuk24,
я вот кой-чего набросал. Думаю, разберетесь:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
 
namespace CA
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] religions = { "Христианство", "Иудаизм", "Ислам", "Другие" };
            string[] strings = new string[3];
            strings[0] = "Эмпайр-стейт-билдинг, 443";
            strings[1] = "Собор Василия Блаженного, Христианство";
            strings[2] = "Белый дом, США";
            Building[] buildings=new Building[strings.Length];
            for (int i=0; i<strings.Length; i++)
            {
                string[] parts = strings[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                parts[1] = parts[1].Trim();
                double hight;
                if (double.TryParse(parts[1], out hight))
                {
                    buildings[i] = new CivilСonstr(parts[0], hight);
                }
                else if (Array.IndexOf(religions, parts[1]) >= 0)
                {
                    buildings[i] = new ReligiousConstr(parts[0], (Denomination)Array.IndexOf(religions, parts[1]));
                    continue;
                }
                else
                {
                    buildings[i] = new GovernmentСonstr(parts[0], parts[1]);
                }
            }
            Console.ReadLine();
        }
    }
 
    class Building
    {
        public string name;
        public Building(string name)
        { this.name = name; }
    }
 
    class ReligiousConstr : Building
    {
        public Denomination religion;
        public ReligiousConstr(string name, Denomination relig):base(name)
        { this.religion = relig; }
    }
 
    class GovernmentСonstr : Building
    {
        public string country;
        public GovernmentСonstr(string name, string country) : base(name)
        { this.country = country; }
    }
 
    class CivilСonstr : Building
    {
        public double hight;
        public CivilСonstr(string name, double hight) : base(name)
        { this.hight = hight; }
    }
 
    public enum Denomination
    {
        Christianity,
        Judaism,
        Islam,
        Other
    }
 
}
1
1 / 1 / 1
Регистрация: 08.12.2014
Сообщений: 62
12.11.2015, 17:46  [ТС]
Даценд, Благодарю за ответ, с одной стороны работа кажется довольно простой считать данные, создать объекты, но реализация просто удивляет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2015, 17:46
Помогаю со студенческими работами здесь

Как извлечь подстроку из строки, считанной с файла
Привет всем! Подскажите пожалуйста, как реализовать на vb вывод указанных символов. Есть данные в файле, к примеру 12:05:24, как...

Как динамически создавать объекты?
Добрый день! Есть задача нарисовать картинку, на которой будут двигаться объектики, все это происходит на JPanel при помощи класса...

Как правильно создавать объекты ?
Как правильно создавать объекты и как они расходуют память, что является правильным подходом? вариант 1: public class...

Как динамически создавать объекты класса ?
Всем привет! У меня есть файл app.config в котором хранится информация о точках. У каждой точки 3 св-ва: name, defaultValue и match....

Как правильно создавать объекты на форме?
Задача следующей программы рисовать гибкий график функции на поле класса PictureBox. Для этого я создал класс, в котором объявляется объект...


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

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

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru