提到单词的次数

时间:2012-02-13 17:42:25

标签: java string

我正在创建一个简单的Java程序,它应该读取一个txt文件并计算一个特定单词被提到的次数。这就是我在下面的内容,它编译并运行正常,但是当它应该运行到数千个时仍然会返回0作为答案...

在这个场合,我想知道在这个文件中提到过多少次“am via”......

/*AUTHOR Yun Lee
Finding out the number of tweets per day*/

import java.io.*;
import javax.swing.*;
import java.util.Scanner;

class tweetnumber
{

public static void main(String args[])
{
    try
    {

        FileInputStream fstream = new FileInputStream("tacobell.23jan2012.txt");
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine;

        int counter1 = 0;
        String s = "am via";

        while ((strLine = br.readLine()) != null)   
        {
            System.out.println (strLine);
            if (strLine.contains(s))
            {
                counter1++;
            }

        }
        in.close();
        System.out.println("There were " + counter1 + " messages in the AM of this day");
    }

    catch (Exception e)
    {
        System.err.println("Error: " + e.getMessage());
    }

}
}

3 个答案:

答案 0 :(得分:1)

<{p}} FileInputStreamsupposed to be used

  

FileInputStream用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用FileReader。

因为您正在尝试阅读字符,请尝试以不同方式打开文件。你可以尝试:

File f = new File("tacobell.23jan2012.txt");
BufferedReader br = new BufferedReader(new FileReader(f));

答案 1 :(得分:1)

我对它进行了测试,它适用于编码为ANSI的文本文件。 然后我在编码为Unicode的同一个文件上尝试了一个额外的“鱼腥”字符,如:♣,然后它去了:0 因此,请检查您的输入文件或阅读方式。

尝试this post here

答案 2 :(得分:0)

DataInputStream可能无法正确地将文件从字节转换为字符。尝试删除它,并将FileInputStream传递给InputStreamReader构造函数。