题
林粘在在一个字符串写入字发生。 我得到了一些提示(在任务备注)使用的是与compareToIgnoreCase。所以我尝试是这样的:
splitwords = StringCont.split("\\s");
for(int i=0; i<splitwords.length; i++)
{
if(splitwords[1].compareToIgnoreCase(splitwords[i]) == 0)
splitcount++;
}
这当然只是我能做些什么,也许坏的方式。当我运行的代码,我得到有时是出于阵列exeption的,有时它运行。 现在缺少的是:经过的所有文字和检查并跳过这已经算的话。 我会很乐意得到任何帮助,因此可以一起移动,并了解它是如何编码。谢谢:)
编辑:看来我没有足够的解释清楚这个问题,但我得到这很容易放在一起是我所需要的地图对象漂亮的答案。我不知道地图。 所以啊,我试图找到的次数每一个给定词串中找到。
tangens:它应该意味着,采取的第一个字(其中,第一空白是)splitwords [1],并将其与在串splitwords所有换句话说[i]和如果是0(等于),然后计数++
艾司科:确实有有白色空间,如在句子。但我还是得到了这个exeption。 我不知道为什么通。
解决方案
存放在 Map
词语和它们的计数一>
String[] words = string.toLowerCase().split("\\s+");
Map<String, Integer> wordCounts = new HashMap<String, Integer>();
for (String word : words) {
Integer count = wordCounts.get(word);
if (count == null) {
count = 0;
}
wordCounts.put(word, count + 1);
}
请注意,我toLowerCase()
之前调用split()
你似乎想拥有不区分大小写。
其他提示
您寻找的某种的单词的句子的发生或在句子中的所有单词的累积字数?基于您的示例代码,我期望前者,但你的解释让我觉得后者。
在任何情况下,明显的东西:如果没有在输入串中的任何空格,String#split()
返回包含恰好一个要素的数组 - 原来字符串本身。由于数组索引从零开始,即splitwords[1]
引起该ArrayIndexOutOfBoundsException
因为唯一可用的字符串是在索引[0]
。
您可以使用一组和每个字存储到,并在年底拿到集的大小。
您将得到不同的字的数量未在数量当然字的
如果你要计算这个词出现时,你应该使用HashMap<String, Integer>
。在那里,你可以存储找到的每个字的计数器。