簡體   English   中英

將對象用作數組時,出現空指針異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM