Java - 无法将1维数组传递给2维数组

时间:2017-08-28 16:55:13

标签: java arrays

我试图逐行使用pdfbox阅读pdf文件,以便我可以将它与旧版本进行比较。

为此,我做了:

static String[][] SplitString_into_array(String string_to_split)
{
    final int SIZE = 1495; //max size allowed in array
    int number_arrays = string_to_split.length()/SIZE;
    int start = 0;
    int end = SIZE;
    int max = string_to_split.length();
    int i, j;

    // Pdfs are very big, so i had to create a 2d array, 
    // where ROWS are the number of arrays to be created 
    // based on the size and COLS are the max size allowed.

    String[][] pdf_final = new String[number_arrays][SIZE]; 
    String[] pdf_split = new String[SIZE];


    for(i = 0; i < pdf_final.length; i++)
    {
        String tmp  = string_to_split.substring(start, end);

        for(j = 0; j < pdf_final[i].length-1; j++)  
        {        
            pdf_split = tmp.split("\\r?\\n");  
            pdf_final[i][j] = pdf_split[j];
        }

        start = SIZE + 1;            
        end = SIZE + SIZE;

        if(end > max)
        {
            end = max;
        }
    }

    return pdf_final;
}

问题是我在执行操作时遇到错误超出绑定异常:

pdf_final[i][j] = pdf_split[j];

似乎J只达到I的最大尺寸,但我不知道为什么,因为两种尺寸都是正确定义的。

有人可以帮助我吗?

此致

1 个答案:

答案 0 :(得分:0)

如果您的初始字符串足够大,

pdf_final[i].length可能会超过pdf_split.length。更确切地说:string_to_split.length()/SIZE > SIZE

对不起上面的回答是不正确的。可能是i超出约束而不是j对于大文件。

就像Jon Skeet所说,声明没有给你一个1495的数组:

pdf_split = tmp.split("\\r?\\n")