我很抱歉不得不提出这个问题,我真的很感谢你的帮助。我正在使用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
非常感谢你!
答案 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]);
非常基础,根据需要进行修改。