Java计算X字母单词的频率/次数?

时间:2013-08-06 02:14:46

标签: java

我很抱歉不得不提出这个问题,我真的很感谢你的帮助。我正在使用Java,我需要计算x字母单词出现的次数。单词x基本上是一个数字,用任何数字替换它(即1/2/3)。 ;)

x字母字= 1字母字/ 2字母字/ 3字母字等。

因此,如果文本文件包含以下文本:

Hello World! This is a sample file.

以下内容应从Java输出:

1个字母的单词:1 2个字母的单词:2 3个字母的单词:2 4个字母的单词:3 5个字母的单词:0 .. 9个字母的单词:1

对不起麻烦,但这可能吗?如果没有任何意义,请告诉我。我真诚地感谢您的帮助! :d

非常感谢你!

2 个答案:

答案 0 :(得分:2)

在提问之前,您需要进行谷歌搜索并查看其他地方,我们通常会处理包含小问题或错误的修复代码。但是,由于人们现在可能会看到谷歌可以找到这个页面...

首先要读取一个文件,你需要一些Streams - 用数据输入/输出的东西。

File file = new File("C:\\MyFile.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);

您将使用最后一个来访问您的数据。如果文件包含多行,您将需要使用循环来获取所有行:

while (dis.available() != 0) { // Tests for more lines
    String s = dis.readLine(); // Get the line

现在,您可以使用sushain97向您展示的方法将行拆分为不同的字符串:

String[] sParts = s.split(" "); // Splits the strings into an array using the 'SPACE' as a reference

我们需要一个包含所有字母的整数数组。长度将是最长的字符串。

int longestLength = 1; // The longest length of word
for (String strx : sParts) { // Go through each sPart, the next one is called strx
    if (longestLength < strx.length()) // If it's got a longer length than the current record
        longestLength = strx.length(); // Set a new record
}
int[] counts = new int[longestLength + 1]; // Make the array with the length needed; +1 since arrays are 0-based

遍历所有字符串并将1添加到相应的数组编号。

for(String str : strings)
    counts[str.length()] += 1; // Add one to the number of words that length has

并输出:

for(int i = 1; i < counts.length; i++) // We use this type of loop since we need the length
    System.out.println(i + " letter words: " + counts[i]);
} // Close that while loop from before

将来,请按照我的建议行事,但我希望这可以帮助所有来到这里获取信息的googlers。 :)

答案 1 :(得分:0)

怎么样:

String string = "Hello World! This is a sample file.";
String[] strings = string.split(" ");
int[] counts = new int[30]; //Change this depending on how far you want to go
for(String str : strings)
     if(str.length() < counts.length) counts[str.length()] += 1;
for(int i = 1; i < counts.length; i++)
    System.out.println(i + " letter words: " + counts[i]);

非常基础,根据需要进行修改。