Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с ошибкой! 
V
    Опции темы
kuller
Дата 20.3.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Здравствуйте!

Суть задачки вот в чем: 

дано 3 класса, Отдел кадров, Бригады, Рабочие.
В "Отдет кадров" содержит массив "Бригад", а "Бригады" в свою очередь должны содержать массив "Рбочие".
Ну т.е. в отделе 3 бригады и в 1 к примеру 10 работников, во 2 - 20, а в 3 - 5.
Реализовать это нужно по средствам ВЛОЖЕННОСТИ, а не НАСЛЕДОВАНИЯ!


Вот попытался сделать в классе "Отдел кадров" масиив "Бригад" и заполнить их ... и столкнулся с ошибкой:
Object reference not set to an instance of an object.

Вот мой код:
Код

namespace oop_laba2_chast1
{
    class Program
    {
        static void Main(string[] args)
        {
            Otdel_kadrov K = new Otdel_kadrov("1.txt");
            K.Print();
        }
    }
    public class Otdel_kadrov
    {
        public int kol_brigad;
        Brigada[] A;
        public Otdel_kadrov() { }
        public Otdel_kadrov(string s)
        {
            FileStream B = new FileStream(s, FileMode.Open, FileAccess.Read);
            StreamReader B1 = new StreamReader(B);
            string s1;
            int kol = 0;
            while ((s1 = B1.ReadLine()) != null)
            {
                kol++;
            }
            kol_brigad = kol;
            A = new Brigada[kol];
            B.Seek(0, SeekOrigin.Begin);
            kol = 0;
            while ((s1 = B1.ReadLine()) != null)
            {
                string [] s2 = s1.Split('>');
                A[kol].fio_brigadira = Convert.ToString(s2[0]);
                A[kol].god_rojdeniya = Convert.ToString(s2[1]);
                A[kol].telefon = Convert.ToString(s2[2]);
                kol++;
            }
            B1.Close();
        }
        public void Print()
        {
            Console.WriteLine("Количество бригад: {1}", kol_brigad);
            for (int i = 0; i < A.Length; i++)
            {
                Console.WriteLine("ФИО бригадира {0} бригады: {1}", i + 1, A[i].fio_brigadira);
                Console.WriteLine("Год рождения бригадира {0} бригады: {1}", i + 1, A[i].god_rojdeniya);
                Console.WriteLine("Телефон бригадира {0} бригады: {1}", i + 1, A[i].telefon);
            }
        }
    }
    public class Brigada
    {
        public string fio_brigadira;
        public string god_rojdeniya;
        public string telefon;
        public Brigada() { }
    }
    public class Rabotnik
    {
        public string fio_rabotnika;
        public string specialnost;
        public int razryad;
        public Rabotnik() { }
    }
}


Файл 1.txt содержит:

Код

Ivanov>1990>0-777-1-11-11
Kozlov>1991>0-777-2-22-22
Petrov>1992>0-777-3-33-33
Sidorov>1993>0-777-4-44-44
Dyatlov>1994>0-777-5-55-55
Demidov>1995>0-777-6-66-66
Semenov>1996>0-777-7-77-77


Помогите разобраться, что за ошибка такая, что я не правильно делаю.
Заранее спасибо!!!
PM MAIL   Вверх
azesmcar
Дата 20.3.2009, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Цитата

Object reference not set to an instance of an object.


обращение к нулевому указателю. Где конкретно выдает ошибку, запусти под дебагером, посмотри на какой строке.
PM   Вверх
kuller
Дата 20.3.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Цитата

обращение к нулевому указателю. Где конкретно выдает ошибку, запусти под дебагером, посмотри на какой строке. 


Вот на нее ручается:

Код

A[kol].fio_brigadira = Convert.ToString(s2[0]);

PM MAIL   Вверх
azesmcar
Дата 20.3.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



над кодом еще работать и работать...(мы за качество кода всей бригадой в ответе smile )

держи, сколько успел подправил..главное что работает

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace console
{
    class Program
    {
        static void Main(string[] args)
        {
            HumanResources K = new HumanResources("1.txt");
            K.Print();
        }

        public class HumanResources
        {
            public HumanResources(string fileName)
            {
                FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                StreamReader stream = new StreamReader( fileStream );
                string line;
                while ((line = stream.ReadLine()) != null)
                {
                    string[] separated = line.Split('>');
                    Brigada temp = new Brigada();
                    temp.FIO = separated[0];
                    temp.BirthDate = separated[1];
                    temp.Phone = separated[2];
                    brigadaList_.Add(temp);
                }
                stream.Close();
                fileStream.Close();
            }

            public void Print()
            {
                Console.WriteLine("Количество бригад: {0}", brigadaList_.Count);
                int i = 0;
                foreach (Brigada temp in brigadaList_)
                {
                    Console.WriteLine("ФИО бригадира {0} бригады: {1}", i, temp.FIO);
                    Console.WriteLine("Год рождения бригадира {0} бригады: {1}", i, temp.BirthDate);
                    Console.WriteLine("Телефон бригадира {0} бригады: {1}", i++, temp.Phone);
                }
            }
            private List<Brigada> brigadaList_ = new List<Brigada>();
        }
        public class Brigada
        {
            public string FIO
            {
                get { return fio_brigadira; }
                set { fio_brigadira = value; }
            }
    
            public string BirthDate
            {
                get { return god_rojdeniya; }
                set { god_rojdeniya = value; }
            }

            public string Phone
            {
                get { return telefon; }
                set { telefon = value; }
            }
            private string fio_brigadira = "";
            private string god_rojdeniya = "";
            private string telefon = "";
        }
    }
}

PM   Вверх
kuller
Дата 20.3.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



azesmcar, Большое спасибо!!!!
Буду разбираться!!!!

Добавлено через 4 минуты и 40 секунд
azesmcar, хотя только что я вот как нашел решение той ошибки:

Код

namespace OPITY
{
    class Program
    {
        static void Main(string[] args)
        {
            Otdel_kadrov K = new Otdel_kadrov("1.txt");
            K.Print();
            Console.Read();
        }
    }
    public class Otdel_kadrov
    {
        public int kol_brigad;
        Brigada[] A;
        public Otdel_kadrov() { }
        public Otdel_kadrov(string s)
        {
            FileStream B = new FileStream(s, FileMode.Open, FileAccess.Read);
            StreamReader B1 = new StreamReader(B);
            string s1;
            int kol = 0;
            while ((s1 = B1.ReadLine()) != null)
            {
                kol++;
            }
            kol_brigad = kol;
            B.Seek(0, SeekOrigin.Begin);
            A = new Brigada[kol];
            int index = 0;
            while ((s1 = B1.ReadLine()) != null)
            {
                string[] s2 = s1.Split('>');
                A[index] = new Brigada(s2[0], s2[1], s2[2]);
                index++;
            }
            B1.Close();
        }
        public void Print()
        {
            Console.WriteLine("Количество бригад: {0}\n", A.Length);
            for (int i = 0; i < A.Length; i++)
            {
                Console.WriteLine("ФИО бригадира {0} бригады: {1}", i + 1, A[i].fio_brigadira);
                Console.WriteLine("Год рождения бригадира {0} бригады: {1}", i + 1, A[i].god_rojdeniya);
                Console.WriteLine("Телефон бригадира {0} бригады: {1}\n", i + 1, A[i].telefon);
            }
        }
    }
    public class Brigada
    {
        public string fio_brigadira;
        public string god_rojdeniya;
        public string telefon;
        public Brigada() { }
        public Brigada(string a, string b, string c)
        {
            fio_brigadira = a;
            god_rojdeniya = b;
            telefon = c;
        }
    }
    public class Rabotnik
    {
        public string fio_rabotnika;
        public string specialnost;
        public int razryad;
        public Rabotnik() { }
        public Rabotnik(string a, string b, int c)
        {
            fio_rabotnika = a;
            specialnost = b;
            razryad = c;
        }
    }
}

PM MAIL   Вверх
azesmcar
Дата 20.3.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Цитата

azesmcar, хотя только что я вот как нашел решение той ошибки:


у тебя там полно проблем с неинициализированными переменными, к тому же зачем перебирать весь файл чтобы узнать сколько там строк, и вообще зачем тебе знать сколько строк? лишняя медленная операция, используй лист и дело с концом.
PM   Вверх
kuller
Дата 20.3.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Цитата

у тебя там полно проблем с неинициализированными переменными


а разве пустой конструктор не обнулит численные переменные, а строка не присвоит "" ???

Цитата

лишняя медленная операция, используй лист и дело с концом.


ниуогда не пробывал и даже не знал про такое)))
спасибо!!!
обязательно разберусь с этим и возьму на заметку!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.