[英]Error using Buffered Reader
我编写了以下代码来计算文件中的行数,字符数和单词数。 我使用过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。 这个代码还有其他方法吗?
首先,你需要实际读取BufferedReader
- 但如上所述,你真的无视你甚至拥有它。 而不是file.read()
,你需要做br.read()
。
您可能已经在当前方法中观察到的部分问题是,在将BufferedReader
附加到file
后直接从file
读取时,您可能会丢失字符。 BufferedReader
可以预先从流中读取字符以填充缓冲区 - 因此直接从file
读取将导致错过这些字符。
那么,你是对的,你不能比较字符和字符串 - 所以比较字符:
if((char)i == ('\t'))
countw++;
else if((char)i == '\n')
countl++;
一旦你解决了这些问题,我希望你会发现其他问题 - 但希望这足以让你开始。 (例如,您的单词是否真的被制表符分隔 - 或者您是否想要查找空格等?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.