我有一个Object,它有一些ArrayList作为propoerties,如下所示。现在我试图使用这些对象属性(ArrayList)放入另一个Arraylist,但它不工作,我得到一个Nullpointerexception。以下源代码说明了我的想法:
使用Arraylist作为对象属性的类:
public class RawVector {
private long size;
private ArrayList<Float> x,y,z;
private ArrayList<Long> time;
public void setSize(long time){
this.size = time;
}
public ArrayList<Long> getTime(){
return this.time;
}
public void setTime(ArrayList<Long> time){
this.time = time;
}
Class testcsv,其中我填充了类RawVector的ArrayList x,y,z中的值:
...... ArrayList<Float> x = new ArrayList<Float>();
ArrayList<Float> y = new ArrayList<Float>();
ArrayList<Float> z = new ArrayList<Float>();
File n = new File("C://file.csv");
FileReader fileReader = new FileReader(n);
BufferedReader reader = new BufferedReader(fileReader);
for(String zeile = reader.readLine(); zeile != null; zeile = reader.readLine()){
StringTokenizer data = new StringTokenizer(zeile, " ,");
x.add(Float.parseFloat(data.nextToken()));
y.add(Float.parseFloat(data.nextToken()));
z.add(Float.parseFloat(data.nextToken()));
size++;
}
vector2 = new RawVector();
vector2.setX(x);
vector2.setY(y);
vector2.setZ(z);
.....
我希望将类RawVector的ArrayLists分配给另一个ArrayList的Class Segementation:
ArrayList<Float> sampleX = new ArrayList<Float>();
ArrayList<Float> sampleY = new ArrayList<Float>();
ArrayList<Float> sampleZ = new ArrayList<Float>();
while(countersize <= (new RawVector().getSize())){
Windowing wid = new Windowing();
for(int i = 0; i <= m.getWsize() ; i++){
if(i <= (new RawVector().getSize())){
sampleX.add(rv.getX().get(i));
sampleY.add(rv.getY().get(i));
sampleZ.add(rv.getZ().get(i));
}
我得到以下例外:
Exception in thread "main" java.lang.NullPointerException
at Segementation.getwindow(Segementation.java:69)
at Segementation.main(Segementation.java:95)
第69行代表:
sampleX.add(rv.getX().get(i));
这一行背后的想法是在Arraylist x中获取i的值并将其添加到新的ArrayList sampleX
我知道如果你不初始化你的Arraylist,你会得到一个NullpointerException。但我非常确定我的类RawVector的ArrayList x是通过类tescsv分配值来实现的。
我希望我的问题很简单。我会非常感谢任何帮助!!!!!! 提前谢谢。
答案 0 :(得分:0)
我认为你可能会让一个类与一个实例混淆。 RowVector
类将实例字段x
,y
和z
初始化为null
。 (它不是明确的,但是当你没有给类的任何字段赋予初始值时会发生这种情况。)在你的第三个代码块中,你实例化一个新的RawVector
对象,你就是在尝试引用getX()
之前没有设置任何数组。您在第二个代码块中调用vector2.setX(x);
的事实无效,因为它与RawVector
的实例不同于第三个代码块中使用的实例。