提问者:小点点

计算字符串中单词的Java程序


我正在写一个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
    }

}

共1个答案

匿名用户

您需要消除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来完成迭代工作。