Исключение нулевого указателя при использовании объектов в качестве массива - PullRequest
0 голосов
/ 02 марта 2012

Это мой класс EmpData:

package com.bank;

public class EmpData {
int id;
String name;
String date;
String pos;
String status;


public void setEmp(int id, String name, String date) {
    this.id = id;
    this.name = name;
    this.date = date;
}

public void setStat(String pos, String stat){
    this.pos = pos;
    this.status = stat;
}

public void disp(){
    System.out.println(id+" : "+name+" : "+date+" : "+pos+" : "+status);
}

}

Это мой главный класс:

package com.bank;

public class Bank {
    public static void main(String[] args) {
        EmpData[] obj = new EmpData[4];
        obj[1].setEmp(1, "Test123", "09-04-1990");
        obj[1].setStat("clerk", "on-hold");
        obj[1].disp();
    }
}

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

Исключение в потоке "main" java.lang.NullPointerException в com.bank.Bank.main (Bank.java:6)

Ответы [ 6 ]

2 голосов
/ 02 марта 2012

Вы не инициализируете obj[1] перед установкой значений ..

как и должно быть

obj[1] = new EmpData();
obj[1].setEmp(1, "Test123", "09-04-1990");
obj[1].setStat("clerk", "on-hold");
obj[1].disp();
1 голос
/ 02 марта 2012

Создайте экземпляр EmpData, установите для него данные, а затем назначьте его для нужного индекса.Вы пытаетесь присвоить значения NULL.

1 голос
/ 02 марта 2012

Вы не инициализировали obj [1], вы просто выделили 4 слота для EmpData, вы создаете новый экземпляр для каждого. Просто добавьте это после создания массива:

obj[1] = new EmpData();
0 голосов
/ 02 марта 2012

Вы должны сначала создать новый объект EmpData [] obj = new EmpData [4]; obj [1] = новый EmpData ();

package com.bank;

public class Bank {
    public static void main(String[] args) {
        EmpData[] obj = new EmpData[4];
        obj[1] = new EmpData ();
        obj[1].setEmp(1, "Test123", "09-04-1990");
        obj[1].setStat("clerk", "on-hold");
        obj[1].disp();
    }
}
0 голосов
/ 02 марта 2012

Вы также можете сделать

for (int i = 0; i < obj.length ; i++) {
    obj[i] = new EmpData();
}

чтобы инициализировать их все с пустыми данными. Вы можете добавить конструктор в EmpData, чтобы вы могли установить данные для его создания.

0 голосов
/ 02 марта 2012

Вы должны заполнить ваш массив объектами, что вы сделали, объявив массив и его размер.

public static void main(String[] args) {
        EmpData[] obj = new EmpData[4];
        obj[1] = new EmpData();        
        obj[1].setEmp(1, "Test123", "09-04-1990");
        obj[1].setStat("clerk", "on-hold");
        obj[1].disp();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...