我正在写一个Java程序来计算字符串中每个单词的出现次数:
" hello this is a java program this program count the words in string "
hello 1
this 2
is 1
a 1
java 1
program 2
我已经完成了编码,但它没有运行,我不知道为什么。 你们能花点时间帮我检查一下吗?
import java.util.*;
/**
*
* @author user
*/
public class CountTheToken {
static void stringCount ( String inputString)
{
HashMap<String,Integer> strCountMap
= new HashMap<String,Integer>();
StringTokenizer st1 = new StringTokenizer(inputString);
String strArray[] = inputString.split(" ");
for (String part : strArray )
{
strCountMap.put(part,0);
}
while (st1.hasMoreTokens())
{
for (String c : strArray)
{
if ( strCountMap.containsKey(c))
{
strCountMap.put(c, strCountMap.get(c)+1);
}
else
{
strCountMap.put(c, 1);
}
}
}
for ( Map.Entry entry : strCountMap.entrySet())
{
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String str = "hello this is mario mario has moustache";
stringCount (str);
// TODO code application logic here
}
}
您需要消除while循环
中的for循环
。 像这样做。
while (st1.hasMoreTokens()) {
String c = st1.nextToken();
if (strCountMap.containsKey(c)) {
strCountMap.put(c, strCountMap.get(c) + 1);
} else {
strCountMap.put(c, 1);
}
}
您不需要for loop
。 只需依靠StringTokenizer
来完成迭代工作。