这是我的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();
}
}
我在eclipse中没有语法错误,但是当我运行程序时,我得到以下空指针错误
线程“main”java.lang.NullPointerException中的异常 在com.bank.Bank.main(Bank.java:6)
答案 0 :(得分:2)
在设置值之前,您没有初始化obj[1]
。
应该是
obj[1] = new EmpData();
obj[1].setEmp(1, "Test123", "09-04-1990");
obj[1].setStat("clerk", "on-hold");
obj[1].disp();
答案 1 :(得分:1)
你没有初始化obj [1],你只为EmpData分配了4个插槽,你在每个插槽上创建一个新实例。只需在创建阵列后添加:
obj[1] = new EmpData();
答案 2 :(得分:1)
创建EmpData实例,将数据设置为它,然后将其分配给所需的索引。您正尝试将值分配给NULL。
答案 3 :(得分:0)
你必须用对象填充数组,你所做的就是声明数组和它的大小。
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();
}
答案 4 :(得分:0)
您也可以
for (int i = 0; i < obj.length ; i++) {
obj[i] = new EmpData();
}
用空数据初始化它们。您可以向EmpData添加构造函数,以便在创建数据时设置数据。
答案 5 :(得分:0)
您必须先创建一个新对象 EmpData [] obj = new EmpData [4]; obj [1] = new 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();
}
}