我对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也是如此。
答案 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