如何将从文件读取的数据存储到2D数组中

时间:2013-12-11 04:59:58

标签: java arrays

我正在处理我的作业,这要求我从文本文件中读取输入并存储到矩阵中。基本上我在这里有部分代码。

    int count = 0 ;
    double[][] matrix = null;

    while ((line = reader.readLine()) != null) 
    {   
        line2 = line.split(" ");

        double[] criteriaWeight = {Double.parseDouble(line2[0]),Double.parseDouble(line2[1]),Double.parseDouble(line2[2]),Double.parseDouble(line2[3])};

        for ( int i = 0 ; i < criteriaWeight.length ; i++ )
            matrix[count][i] = criteriaWeight[i];

        count++;
    }

现在,我正在尝试做的逻辑是我从文本文件中读取数据,然后将其转换为double并存储到2D数组(matrix)。我设法从文件中读取数据。这是没有错误的。

现在,我的问题发生在matrix[count][i] = criteriaWeight[i];,我收到错误

Exception in thread "main" java.lang.NullPointerException
at javaapplication2.JavaApplication2.readFile(JavaApplication2.java:42)
at javaapplication2.JavaApplication2.main(JavaApplication2.java:56)
Java Result: 1

任何人都可以指出我的错误吗?非常感谢你。

2 个答案:

答案 0 :(得分:2)

NullPointerException

  

当应用程序在需要对象的情况下尝试使用null时抛出。其中包括:

  • 调用null对象的实例方法。
  • 访问或修改空对象的字段。
  • 将null的长度视为数组。
  • 访问或修改null的插槽,就像它是一个数组一样。
  • 抛出null,就好像它是一个Throwable值。

因此,在您的代码中double[][] matrix = null;

您使用null声明并初始化。

所以当你写

  matrix[count][i]

那仍然是空的。你需要初始化像

 double[][] matrix = new double[x][y];

如果您正在寻找动态数组,请考虑使用ArrayList

答案 1 :(得分:0)

以下实施如何

List<Integer>[] array;
array = new List<Integer>[10];
array[0] = new ArrayList<Integer>(); ....

它将作为动态二维数组