我编写了以下代码来计算文件中的行数,字符数和单词数。 我使用过BufferedReader。
import java.io.*;
class FileCount
{
public static void main(String args[]) throws Exception
{
FileInputStream file=new FileInputStream("sample.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(file));
int i;
int countw=0,countl=0,countc=0;
do
{
i=file.read();
if((char)i==("\t"))
countw++;
else if((char)i=="\n")
countl++;
else
countc++;
}while(i!=-1);
System.out.println("Number of words"+countw);
System.out.println("Number of lines"+countw);
System.out.println("Number of characters"+countc);
}
}
问题是我必须只使用缓冲的阅读器。我知道我们无法比较我在代码中完成的char和String。 这段代码还有其他出路吗?
答案 0 :(得分:2)
首先,你需要实际阅读BufferedReader
- 但如上所述,你真的无视你甚至拥有它。而不是file.read()
,您需要br.read()
。
您可能已经在当前方法中观察到的部分问题是,在将file
附加到BufferedReader
之后直接从BufferedReader
阅读时,您可能会丢失字符。 file
可以预先从流中读取字符以填充缓冲区 - 因此直接从if((char)i == ('\t'))
countw++;
else if((char)i == '\n')
countl++;
读取将导致错过这些字符。
然后,你是对的,你不能比较字符和字符串 - 所以比较字符:
{{1}}
一旦你解决了这些问题,我希望你会发现其他问题 - 但希望这足以让你开始。 (例如,你的单词是否真的被制表符分隔 - 或者你想要寻找空格等?)