Java:如何在一维数组中存储二维数组

时间:2014-09-21 07:11:35

标签: java arrays loops nullpointerexception

我尝试将已经找到的2D数组存储到一维数组中,以便以后加快处理速度。但是,当我尝试填充1D数组时,我不断收到nullPointerException。会发生什么是txt文件具有我们首先读取的行数和列数,以获取执行2D数组的行和列数量。然后每个索引读取txt文件中的下一个数据元素并将其存储在该索引处,直到存储所有50 000个整数值。这很好。

现在我想把这个2D数组并将所有元素存储到一维数组中,以便以后在不使用数组列表的情况下查找答案或按顺序排列时更快处理,这很好,

int [][] data = null; 
int[] arrayCount = null;

for (int row = 0; row < numberOfRows; row++)
{
    for (int col = 0; col < numberOfCols; col++)  
    {
        data[row][col] = inputFile.nextInt();
    }
} 
//Doesn't Work gives me excpetion
data[0][0] = arrayCount[0];

我在for循环中尝试了这个,但无论我得到什么NullPointerException

1 个答案:

答案 0 :(得分:2)

您尚未初始化dataarrayCount变量,请按如下方式对其进行初始化:

int[][] data = new int[numberOfRows][numberOfCols];
int[] arrayCount = new int[numberOfRows * numberOfCols];

在您的情况下,要从2D复制到1D阵列,您可以使用以下内容:

    numberOfRows = data.length;
    if (numberOfRows > 0) {
        numberOfCols = data[0].length;
    } else {
        numberOfCols = 0;
    }

    System.out.println("numberOfRows : "+numberOfRows);
    System.out.println("numberOfCols : "+numberOfCols);

    for (int row = 0, count = 0; row < numberOfRows; row++) {
        for (int col = 0; col < numberOfCols; col++) {
            arrayCount[count] = data[row][col];
            count++;
        }
    }