問題如下:
class FileStruct{ int intPara; FileStruct(){ intPara=0; } public void setintPara(int i){ intPara=i; } public int getintPara(){ return intPara; }} class Read{ public void main(String[] args){ FileStruct[] fs=new FileStruct[10]; for(int i=0;i<10;i++) System.out.println(fs[i].getintPara);}
此時程式會拋出異常:java.lang.NullPointerException
在以上程式中已存在兩個錯誤:1.對數組的初始化工作沒有結束 2.在類FileStruct中沒有將構造器函數公有化
錯誤原因:1. 在Java中對非基本資料初始化時,必須使用new。在使用new建立數組後,此時數組還是一個引用數組。只有再建立新的對象,並把對象賦值給數組引用,到此初始化結束。
2. 在以上程式中如果再使用new建立對象對數組引用賦值,仍會拋出異常:The constructor FileStruct() is not visible
基於此,以上程式應改為:
class FileStruct{ int intPara; public FileStruct(){ intPara=0; } public void setintPara(int i){ intPara=i; } public int getintPara(){ return intPara; }} class Read{ public void main(String[] args){ FileStruct[] fs=new FileStruct[10]; for(int j=0;j<10;j++) fs[j]=new FileStruct(); for(int i=0;i<10;i++) System.out.println(fs[i].getintPara);}