通过向另一个Arraylist添加一个Arraylist来获取Nullpointer Exception

时间:2014-12-23 19:19:21

标签: java arraylist nullpointerexception

我有一个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分配值来实现的。

我希望我的问题很简单。我会非常感谢任何帮助!!!!!! 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你可能会让一个类与一个实例混淆。 RowVector类将实例字段xyz初始化为null。 (它不是明确的,但是当你没有给类的任何字段赋予初始值时会发生这种情况。)在你的第三个代码块中,你实例化一个新的RawVector对象,你就是在尝试引用getX()之前没有设置任何数组。您在第二个代码块中调用vector2.setX(x);的事实无效,因为它与RawVector的实例不同于第三个代码块中使用的实例。