15 / 21 / 8
Регистрация: 05.04.2013
Сообщений: 204
1

При попытке заполнить поле класса выбрасывается исключение "System.NullReferenceException"

21.09.2014, 19:08. Показов 1138. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При попытке заполнить поле класса выбрасывает исключение "System.NullReferenceException"
обвиняет эту строку
C#
1
AData[i].A = int.Parse(Console.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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System;
 
 
namespace algoritmJohnsona
{
    class Items
    {
        public static int a, b, id;
        public int result;
 
        public static bool operator <(Items Obj1, Items Obj2)
        {
            if (Obj1.result < Obj2.result)
                return true;
            return false;
        }
        public static bool operator >(Items Obj1, Items Obj2)
        {
            if (Obj1.result > Obj2.result)
                return true;
            return false;
        }
        public void Difference()
        {
            result = a - b;
        }
        public  int ID
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        public int A
        {
            set
            {
                a = value;
            }
        }
        public int B
        {
            set
            {
                b = value;
            }
        }
    }
    
    class Program
    {
        public static void ShowItems(Items[] ArrayData)
        {
            for (int i = 0; i < ArrayData.Length; i++)
                Console.WriteLine("J = {0}", ArrayData[i].ID);
        }
        public static void SwapItems(Items Obj1, Items Obj2)
        {
            int temp = Obj1.result;
            Obj1.result = Obj2.result;
            Obj2.result = temp;
        }
        public static void SortItems(Items[] ArrayData)
        {
            for (int i = 1; i < ArrayData.Length; i++)
                for (int j = i; j > 0 && ArrayData[j - 1] > ArrayData[j]; j--) // пока j>0 и элемент j-1 > j, x-массив int
                    SwapItems(ArrayData[j - 1], ArrayData[j]);        // меняем местами элементы j и j-1
        }
        
        static void Main(string[] args)
        {
            Items[] AData = new Items[5];
            Console.WriteLine("Enter Array");
 
            for (int i = 0; i < AData.Length;i++ )
            {
                Console.Write(" Pass Y1: ");
                int y = int.Parse(Console.ReadLine());
                Console.WriteLine(y);
                AData[i].A = int.Parse(Console.ReadLine()); // обвиняет эту строку
                Console.Write(" Pass Y2: ");
                AData[i].B = int.Parse(Console.ReadLine());
 
                AData[i].Difference();
            }
 
            SortItems(AData);
            ShowItems(AData);
 
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2014, 19:08
Ответы с готовыми решениями:

Непонятно из-за чего выбрасывается исключение NullReferenceException
Вот фрагмент кода for (int i=0;i&lt;massive1.Length; i++){ string x; ...

Выбрасывается исключение при попытке подключения к БД
При запуске кода выдает исключение, classpath настроил. Не знаю, что делать. В чем может быть...

Выбрасывается исключение при создании класса
Как объявить класс и поля с методами и функциями в нем?? Пытался сделать так но выводит исключение...

Почта под Android: выбрасывается исключение при создании объекта класса URLName
Всем доброго времени суток. Помогите, плз, разобраться с почтой. Моя программа под Андроид должна...

8
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
21.09.2014, 19:18 2
Цитата Сообщение от okman Посмотреть сообщение
При попытке заполнить поле класса выбрасывает исключение "System.NullReferenceException"
Естественно. Вы создали массив объектов, но самих объектов в нем еще нет. В каждой итерации создавайте объект, а потом уже заполняйте его поля.

Добавлено через 2 минуты
Строкой 81 поставьте:
C#
1
AData[i]=new Items();
1
15 / 21 / 8
Регистрация: 05.04.2013
Сообщений: 204
21.09.2014, 21:56  [ТС] 3
не подскажите а почему программа в итоге выводит пять одинаковых объектов?) при все с последними введенными данными?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
21.09.2014, 22:46 4
okman,
Возможно вы одно и тоже значение класса присваиваете, то есть просто обновляете его данные.
Но т.к. класс ссылочный тип, на каждой итерации вы должны создавать новый объект.
0
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
21.09.2014, 22:51 5
Цитата Сообщение от XRoy Посмотреть сообщение
вы должны создавать новый объект.
XRoy, именно так.
okman, создание нового объекта делайте внутри цикла.
0
15 / 21 / 8
Регистрация: 05.04.2013
Сообщений: 204
21.09.2014, 23:01  [ТС] 6
C#
1
2
3
4
5
6
7
8
9
10
11
        for (int i = 0; i < AData.Length;i++ )
            {
                AData[i] = new Items();
                AData[i].ID = i;
                Console.Write(" Pass Y1: ");
                AData[i].A = int.Parse(Console.ReadLine());
                Console.Write(" Pass Y2: ");
                AData[i].B = int.Parse(Console.ReadLine());
                
                AData[i].Difference();
            }
Делаю в цикле) попробуйте сами, возможно в другой части программы ошибка?
0
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
21.09.2014, 23:24 7
okman,
Цитата Сообщение от okman Посмотреть сообщение
public static int a, b, id;
не подскажете зачем эти переменные сделаны static?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
22.09.2014, 00:22 8
okman,
И конечно можно было бы в классе Items реализовать интерфейс IComparable и сортировать стандартным методом Arrays.Sort
1
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
22.09.2014, 00:30 9
Цитата Сообщение от XRoy Посмотреть сообщение
реализовать интерфейс IComparable и сортировать стандартным методом Arrays.Sort
Или несколько классов-сортировщиков с реализацией IComparer<T> в каждом и static свойства в самом классе с возвращаемым типом каждого из сортировщиков. Это чтобы сортировать стандартным методом Sort(...) по разным критериям.
0
22.09.2014, 00:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2014, 00:30
Помогаю со студенческими работами здесь

Исключение System.NullReferenceException при вызове SerialPort::GetPortNames()
Пишу класс для работы с COM портом (только начинаю). Пытаюсь создать функцию, получающую имена COM...

Исключение System.NullReferenceException при вызове через Android.Net.Sip
Приветствую. ВОзникла небольшая проблема. Пишу программу для совершения вызовов через SIP.Вот код...

Исключение System.UnauthorizedAccessException при попытке архивации папки
Добрый день. Возникла такая проблема: Нужно архивировать папку, а после разархивировать её в...

System.NullReferenceException при обращении к свойству класса
private void TapOnTile(object sender, GestureEventArgs e) { ...

Выбрасывается NullReferenceException при срабатывании события MouseDoubleClick
Здравствуйте. Подскажите пожалуйста в чем может быть ошибка. Использую AttachedCommandBehavior для...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." при попытке запуска
var users = VoiceAuth.AuthClient.GetUsers(); В этом моменте возникает ошибка (fmAuthForm)...

Исключение типа "System.NullReferenceException" при сохранении данных
Добрый вечер! Строго не судите,только учусь. Проблема заключается в следующем: Есть представление...


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

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

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