Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 1
Регистрация: 03.10.2010
Сообщений: 111
1

Создать массив данных и вывести его на консоль

25.03.2012, 11:39. Показов 2204. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.По заданию мне необходимо создать массив данных и вывести его на консоль,количество элементов пользователь вводит сам. Все по концепции ООП.У меня в массиве два типа данных:порядковый номер самолёта и пробег в полёте.Я вроде все сделал правильно,но в одной строке ошибка:В экземпляре объекта не задана ссылка на объект.Помогите.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace LabOOP4
{
    public class Plain
    {
        public int PlNum;//порядковый номер самолёта
        public int FlLen;//дальность полёта самолёта
        public Plain(int PlNum, int FlLen)
        {//через перегруженный метод задаём индексаторы
            this.PlNum = PlNum;//задаём индексаторы для будущего массива
            this.FlLen = FlLen;
        }
 
    }
    class Plains
    {
        Plain[] plains = new Plain[10];
        public Plain this[int pos]//в перегруженном методе делаем обработку исключений и прописываем алгоритм заполнения массива
        {
            get
            {
                if (pos >= 0 || pos < 10) return plains[pos];
                else throw new IndexOutOfRangeException("Вне диапазона!");//исключение индекс вне диапазона
            }
            set { plains[pos] = value; }//заполнение массива значениями            
        }
    }
    class Executer
    {
        static void Main()
        {
            Console.WriteLine("Введите количество самолётов");
            int n=Convert.ToInt32(Console.ReadLine());     
            Plains Airbus = new Plains();
            for (int i = 0; i < n; i++)
            {
                Airbus[i].PlNum = i + 1;//здесь эта ошибка
                Airbus[i].FlLen = i * 15400; 
            }
            Console.WriteLine("Парк самолётов Airbus A380:");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("Номер самолёта:" + Airbus[i].PlNum + " Пробег в полёте" + Airbus[i].FlLen + "km");
            }
            Console.ReadLine();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2012, 11:39
Ответы с готовыми решениями:

Создать класс с парой переменных, записать его в массив и вывести в консоль
Нужно создать класс с парой переменных и и записать его в массив а потом вывести на консоль....

Создать динамичный массив данных и вывести часть его
Прошу помочь разобраться с указателями. Хочется сделать запрос в котором отображается часть данных...

Создать массив из 30 элементов. Заполнить случайными числами от 0 до 50. Вывести массив на консоль
Создать массив из 30 элементов. Заполнить случайными числами от 0 до 50. Вывести массив на...

Создать дерево указателями и вывести примерное его изображение в консоль
Нужно создать дерево указателями и вывести примерное его изображение через консоль. Есть код,...

6
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
25.03.2012, 11:45 2
О_о а нелегче сразу сделать массив Plain
Правил ООП не нарушаю
C#
1
2
3
4
5
6
7
8
9
        public int PlNum{get;private set;}//порядковый номер самолёта
        public int FlLen{get;private set;}///дальность полёта самолёта
        public Plain(int PlNum, int FlLen)
        {//через перегруженный метод задаём индексаторы
            this.PlNum = PlNum;//задаём индексаторы для будущего массива
            this.FlLen = FlLen;
        }
 
    }
C#
1
2
3
Plain[] p = new Plain[];
for(int i=0; i<p.Lenght;i++)
p[i]=new Plain(x,y)
1
4 / 4 / 1
Регистрация: 03.10.2010
Сообщений: 111
25.03.2012, 11:49  [ТС] 3
Может быть и легче,но пока я не знаю что такое {get;private set;}
p[i]=new Plain(x,y) что значит эта строка?можно переделанный код полностью?
0
25 / 19 / 8
Регистрация: 10.10.2009
Сообщений: 75
25.03.2012, 11:52 4
Ошибка у Вас возникает потому, что индексатор в классе Plains осуществляет доступ к объекту типа Plain. Т.е. надо так
C#
1
2
3
4
5
6
Plains Airbus = new Plains();
for (int i = 0; i < n; i++)
{
    Plain tmp = new Plain(i + 1, i * 15400);
    Airbus[i] = tmp; 
}
1
4 / 4 / 1
Регистрация: 03.10.2010
Сообщений: 111
25.03.2012, 12:06  [ТС] 5
Спасибо большое...только в чем моя ошибка заключалась?
C#
1
2
Plain tmp = new Plain(i + 1, i * 15400);
    Airbus[i] = tmp;
здесь,получается создается объект tmp класса Plain внутри объекта Airbus класса Plains?
0
25 / 19 / 8
Регистрация: 10.10.2009
Сообщений: 75
25.03.2012, 12:23 6
Вы создаете массив из 10 объектов, но при этом они не инстанциированы. Т.е. в индексаторе при get возвращается null - отсюда NullReferenceException.
В том, что я написал, создается новый временный объект, а ссылка на него потом присваивается элементу Airbus.
1
4 / 4 / 1
Регистрация: 03.10.2010
Сообщений: 111
25.03.2012, 15:02  [ТС] 7
Спасибо.Тема закрыта.
0
25.03.2012, 15:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2012, 15:02
Помогаю со студенческими работами здесь

Создать объект с названием города и рейтингом и вывести его в консоль
Прошу помочь, господа и господа! Нужно написать программу, которая делает объект с названием...

Создать массив из 5 массивов и вывести на консоль
Длина каждого подмассива генерируется случайно (не более 100 ячеек). Всё подмассивы заполнить...

Собрать пути к картинкам в массив и вывести его в консоль и в файл.
Задачи перейти по гиперссылкам с href_index.html и собрать пути к картинкам в единый массив и...

Проинициализировать массив целых чисел согласно условию и вывести его на консоль
С помощью цикла проициализировать массив целых чисел. Заполнить массив значениями 0, 10, 20, 30, 40...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru