我正在从文件中读取一个字符串,并将该字符串和不同的元素解析为一个数组,以备后用。
一切正常,但是当在WHILE循环中打印元素时,它工作正常,但是,当我尝试从while循环中打印数组时,我得到了一个数组Null指针。 这是代码:
public PointsEX2(){
String temp = new String();
String[] parse =null;
File file = new File("C:/Users/DjKidoo/Desktop/IA/mof.txt");
Scanner sc = null;
for(int t=0;t<pt_tab1.length;t++){
pt_tab1[t]=new PointEX2();
}
try {
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int j=0;
while ((sc.hasNextLine())&& (j<= pt_tab1.length)) {
temp = sc.next();
parse = temp.split(",",0);
pt_tab1[j]= new
PointEX2(Float.parseFloat(parse[0]),Float.parseFloat(parse[1]),Float.parseFloat(parse[2]),Float.parseFloat(parse[3]),parse[4]);
System.out.println(toString(pt_tab1[j])); // perfectly works
}
for (int i=0;i<pt_tab1.length;i++)
System.out.println(pt_tab1[i].x); // Array Null Pointer
}
答案 0 :(得分:1)
您从不会在while循环内递增j
,因此它保持0
,因此您将一个新的PointEX2连续分配给 相同数组项 ,pt_tab1[0]
。所有其他都为空。
pt_tab1
甚至不应该是数组,而应该是ArrayList<PointEX2>
,那么您就不会遇到这个问题。