我正在创建一个程序,让用户选择一个文件然后程序从文件中读取。现在我被告知要使用bufferedreader和string tokenizer来制作程序。到目前为止,我有程序打开文件并计算行数。但是单词的数量并不那么容易。
到目前为止,这是我的代码:
int getWords() throws IOException
{
int count = 0;
BufferedReader BF = new BufferedReader(new FileReader(f));
try {
StringTokenizer words = new StringTokenizer(BF.readLine());
while(words.hasMoreTokens())
{
count++;
words.nextToken();
}
BF.close();
} catch(FileNotFoundException e) {
}
return count;
}
缓冲读卡器一次只能读取一行,但我不知道如何读取更多行。
答案 0 :(得分:1)
计算单词,你可以使用countTokens()代替循环
阅读所有行使用
String line = null;
while(null != (line = BF.readLine())) {
StringTokenizer words = new StringTokenizer(line);
words.countTokens();//use this value as number of words in line
}
答案 1 :(得分:0)
正如您所说,缓冲读卡器将一次读取一行。所以你必须读取行,直到没有更多的行。当到达文件末尾时,readLine()
返回null。
所以做这样的事情
int getWords() throws IOException {
int count = 0;
BufferedReader BF = new BufferedReader(new FileReader(f));
String line;
try {
while ((line = BF.readLine()) != null) {
StringTokenizer words = new StringTokenizer(line);
while(words.hasMoreTokens()) {
count++;
words.nextToken();
}
}
return count;
} catch(FileNotFoundException e) {
} finally {
BF.close();
}
// Either rethrow the exception or return an error code like -1.
}