拆分数组并计算值

时间:2011-07-05 12:46:11

标签: java

我正在试图弄清楚如何实现执行以下操作的方法:

该方法接收一个文本文件,并计算直到指定字符“#”的字数。

数组作为参数通过该方法传递,其中包含序列号列表。数组中的数字对应于单词在文本文件中出现的位置(忽略#),因此第4个单词将对应于值3(n-1)。

该方法将计算数字中#前面的单词出现的次数,并将其除以#之间的条目总数,然后取每次完成时的平均值。

这是一个明确的例子:

假设您有包含以下内容的文本文件:

您好我的名字#是#

相应的数组是:

0,0,1,1,1,2,2,2,2,3,4,4(序列中每个字母的数字)

第一个散列将出现在2和3之间。因此2代表#之前出现的单词。所以我们计算(2的总数)/ 0,1和2的总数。这将是4/9。

然后我们会在两个哈希之间计算相同的#是#。 'something'对应于4,所以我们将(总数为4)/总数为3和4。 这将是2/3。

然后我们将取2/3和4/9

的平均值

我希望这很清楚,如果您需要任何澄清,请告诉我。

1 个答案:

答案 0 :(得分:1)

split()任何空白字符的字符串。现在我有一个数组中的每个单词,每个单元格的索引代表相应的数字,单元格的内容(单词)长度是'我有多少0或1或......'。 这应该可以解决问题的第一部分。

然后你需要找到每个#的位置,它的偏移量,但是你要用词来表示的偏移量,而不是字符。所以我将遍历先前创建的数组,并检查我存储的单词是否为#。如果是,我将更新一个标记变量(这应该保留最后一次看到的#的前一个位置/索引),并计算你想要的除法(4 / 8,2 / 3 w / e)。这是前一个单元格内容的长度除以从标记到当前索引-1的长度之和。

我认为就是这样;逻辑。实施起来并不难。只是不要忘记检查边界。