0

我编写了以下代码来计算文件中的行数、字符数和单词数。我用过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);
}
}

问题是我只能使用缓冲阅读器。我知道我们无法比较我在代码中完成的字符和字符串。这段代码还有其他出路吗?

4

1 回答 1

2

首先,您需要实际阅读BufferedReader- 但如上所述,您真的忽略了您甚至拥有这个。而不是file.read(),你需要做的br.read()

file您使用当前方法可能已经观察到的部分问题是,在附加 a 后直接从 读取时,您可能会丢失字符BufferedReader。可能会从流中BufferedReader预先读取字符以填充缓冲区 - 因此直接读取file将导致这些字符被遗漏。

那么,你是对的,你不能比较字符和字符串 - 所以比较字符:

if((char)i == ('\t'))
  countw++;
else if((char)i == '\n')
  countl++;

一旦你解决了这些问题,我希望你会发现其他问题 - 但希望这足以让你开始。(例如,您的单词是否真的由制表符分隔 - 或者您是否要查找空格等?)

于 2013-02-24T19:38:16.240 回答