繁体   English   中英

使用缓冲读卡器时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM