[英]Null Pointer Exception while using objects as array
這是我的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中沒有語法錯誤,但是當我運行程序時,出現以下空指針錯誤
com.bank.Bank.main(Bank.java:6)中的線程“ main”中的異常java.lang.NullPointerException
您沒有在設置值之前初始化obj[1]
。
應該是
obj[1] = new EmpData();
obj[1].setEmp(1, "Test123", "09-04-1990");
obj[1].setStat("clerk", "on-hold");
obj[1].disp();
您沒有初始化obj [1],只是為EmpData分配了4個插槽,然后在每個插槽上創建一個新實例。 創建數組后,只需添加以下內容:
obj[1] = new EmpData();
創建一個EmpData實例,為其設置數據,然后將其分配給所需的索引。 您正在嘗試將值分配為NULL。
您必須用對象填充數組,您要做的是聲明數組及其大小。
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();
}
你也可以
for (int i = 0; i < obj.length ; i++) {
obj[i] = new EmpData();
}
用空數據初始化它們。 您可以向EmpData添加一個構造函數,以便可以在創建它時設置數據。
您必須首先創建一個新對象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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.