-1

很抱歉不得不问这个问题,我真诚地感谢您的帮助。我正在使用 Java,我需要计算 ax letter word 出现的次数。单词 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

真的非常感谢你!

4

2 回答 2

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

以后,请按照我的建议去做,但我希望这对所有来这里获取信息的谷歌用户有所帮助。:)

于 2013-08-06T02:39:57.110 回答
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]);

很基本,根据需要修改。

于 2013-08-06T02:21:16.743 回答