2015-10-19 3 views
2

У меня есть программа, в которой пользователи могут вводить предложение, и оно может разбивать каждое слово на массив. Кроме того, мне нужно подсчитать частоту каждого слова. Например, Apple - это яблоко - телефон, результатом является то, что Apple-1; это-2; ан-1; а-1; телефон-1.Как подсчитать частоту каждого слова в массиве?

Пожалуйста, помогите мне решить эту проблему, я не знаю, как подсчитать частоту каждого слова.

Вот мой код:

public static void main(String[] args) 
    { 
    while (true) 
    { 
     System.out.println("Enter a sentence:"); 
     Scanner keyboard = new Scanner(System.in); 
     String sentence = keyboard.nextLine(); 

     if (sentence.isEmpty())  // quit the program when user enter an empty string 
     { 
      break; 
     } 
     else 
     { 
     StringTokenizer st = new StringTokenizer(sentence); 

     List<String> sentenceElement = new ArrayList<String>(); 

     while (st.hasMoreTokens()) 
     { 
      sentenceElement.add(st.nextToken()); 
     } 

     System.out.println(sentenceElement); 
     } 
    } 

Спасибо так много !!

+2

Почему вы используете бесконечный цикл? –

+1

, когда пользователь вводит пустую строку, выйдите из программы. – Wei

+2

Этот вопрос следует из [здесь] (http://stackoverflow.com/questions/33200704/use-stringtokenizer-to-count-frequency-of-each-word/33200757#comment54206290_33200757). В этом вопросе есть ответ, который реализует «HashMap». Вы попробовали это? – sam

ответ

4

Вы можете использовать HashMap со словами, находящихся в Key и вхождений Value:

public static void main(String[] args){ 
    Scanner keyboard = new Scanner(System.in); 
    String[] myPhrase = keyboard.nextLine().split(" "); 
    HashMap<String, Integer> myWordsCount = new HashMap<String, Integer>(); 
    for (String s : myPhrase){ 
     if (myWordsCount.containsKey(s)) myWordsCount.replace(s, myWordsCount.get(s) + 1); 
     else myWordsCount.put(s, 1); 
    } 
    System.out.println(myWordsCount); 
} 

Выходные

One two three four and again three and four 
{four=2, and=2, One=1, again=1, two=1, three=2} 
+0

Спасибо! Ваше решение идеально подходит для меня! – Wei

+1

@wei приветствуется. Не забудьте принять и поддержать :) будет Ницца. –

Смежные вопросы