【问题标题】:Getting Nullpointer Exception by adding an Arraylist to another Arraylist通过将 Arraylist 添加到另一个 Arraylist 来获取 Nullpointer 异常
【发布时间】:2014-12-23 19:19:21
【问题描述】:

我有一个对象,它有一些 ArrayList 作为属性,如下所示。现在我试图使用这些对象属性(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;
}

我在类 RawVector 的 ArrayList x,y,z 中填充值的类 testcsv:

 ......         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 的类分割:

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 类分配值来实现的。

我希望我的问题是直截了当的。如果有任何帮助,我将不胜感激!!!!!! 提前致谢。

【问题讨论】:

  • 异常发生在getwindow 方法中,您没有向我们完整展示。您向我们展示了很多 sn-ps 代码代码,格式错误,但遗漏了最重要的部分。请将您的代码缩减为一个简短完整程序来演示问题...那么我们可以为您提供帮助。
  • 你确定Segemetation类第69行的所有对象都已经正确初始化了吗?
  • 我不知道你的整个代码,但是有些东西没有被正确初始化。 rv 为 null 或 rv.getX() 为 null。
  • @ProgrammingIsAwsome:你完全正确,rc 的引用为空。
  • 如何在另一个类中使用类 testcsv 中创建的 ArrayList?我的意思是如何使用 RawVector 对象的 ArrayList。

标签: java arraylist nullpointerexception


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2018-08-19
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多