字符串拆分数组

时间:2014-04-28 05:50:49

标签: java arrays

我对Java仍然很陌生,所以非常感谢任何帮助。

给定一个.txt文件,我的目标是将一行文本中的每个单词分配到一个数组中,然后将每个数组分配到一个父数组中,将其排序为

word[linenum-1][wordnum-1]

示例,给定此文本文件:

  

您好,我的

     

名称是Fred和

     

我喜欢

     吃馅饼。

它会将它们对齐到数组中,如下所示:

word[0][0]="Hello,"

word[0][1]="my"

word[1][0]="name"

word[1][1]="is"

word[1][2]="Fred"

word[1][3]="and"

word[2][0]="I"

word[2][1]="like"

word[3][0]="to"

word[3][1]="eat"

word[3][2]="Pie"

尝试这个时,我在调用方法时不断地使用NullPointerExceptions。 这是我的代码:

public static String word[][];

private static void splitFile(String infile) throws IOException
{
    lineCount = lineNum(infile);

    buffered = new BufferedReader(new FileReader(infile));
    for (i=0;i<lineCount;i++)
    {
        String[] temparray = buffered.readLine().split(" ");
        word[i] = temparray.clone();
    }
    buffered.close();
}

我已经确认lineNum工作,readLine也是如此。

1 个答案:

答案 0 :(得分:0)

您缺少word数组的初始化,

首先,在读取行数后,将其初始化为给定的计数 - words = new String[lineCount][];

其次,您不必克隆由split创建的数组,所以

String[] temparray = buffered.readLine().split(" ");
word[i] = temparray.clone();

可以安全地更改为word[i] = buffered.readLine().split(" ")

当然,这假定lineNum返回正确的数字(建议使用否定的安全检查,建议使用0)并且readLine()不会返回null