我正在创建一个简单的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());
}
}
}
答案 0 :(得分:1)
<{p}} FileInputStream
为supposed to be used
FileInputStream用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用FileReader。
因为您正在尝试阅读字符,请尝试以不同方式打开文件。你可以尝试:
File f = new File("tacobell.23jan2012.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
答案 1 :(得分:1)
我对它进行了测试,它适用于编码为ANSI
的文本文件。
然后我在编码为Unicode
的同一个文件上尝试了一个额外的“鱼腥”字符,如:♣,然后它去了:0
因此,请检查您的输入文件或阅读方式。
答案 2 :(得分:0)
DataInputStream可能无法正确地将文件从字节转换为字符。尝试删除它,并将FileInputStream传递给InputStreamReader构造函数。