2015-07-08 2 views
-3

Я создаю программу java, которая учитывает частоту букв.Java-программирование слов

Мой код читает строку текста из txt-файла, и я получаю сообщение об ошибке, но я не знаю причину.

Ошибка окружает этот фрагмент кода:

for (String str : strings) 
    if (str.length() < counts.length) 
     cou 
        for (String str: strings) 
         if (str.length() < counts.leng 
} 
+0

Что ошибка вы получаете? –

+0

'строки не могут быть разрешены переменной' –

ответ

3

я подозреваю, вы получаете сообщение об ошибке, потому что «струна» не определен. for String str : strings предполагает, что в области с именем «строка» есть переменная, представляющая собой набор или массив строк.

Возможно, вы также можете использовать HashMap вместо массива для отслеживания отсчетов для разных длин. Таким образом, вам не придется беспокоиться о том, что ваш массив достаточно велик, и т.д.

Вы также можете сделать свой код немного проще, объединив свою петлю:

for (String str: strings) 
    total += s1.length(); 
    if (str.length() < counts.length) 
     counts[str.length()] += 1; 

... как только вы выяснить, какие строки должны быть.

0

Сбор ваших слов в HashMap, где ключ - это длина слова, а значение - частота, с которой происходит длина, - это хороший способ подсчета.

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

Пример кода:

public static void main(String[] args) throws Exception { 
    String sentence = "I am a great man from a small town"; 
    String[] words = sentence.split(" "); 
    Map<Integer, Integer> wordLengthFrequency = new HashMap(); 
    for (String word : words) { 
     Integer frequency = wordLengthFrequency.get(word.length()); 
     // Add a new item with a frequency of 1, or increment the frequency count 
     wordLengthFrequency.put(word.length(), frequency == null ? 1 : frequency + 1); 
    } 

    // Iterate through the keys in ascending order to build the output 
    StringBuilder sb = new StringBuilder(); 
    wordLengthFrequency.keySet().stream().sorted().forEach(key -> { 
     if (sb.length() > 0) { 
      sb.append(", "); 
     } 

     sb.append(wordLengthFrequency.get(key)); 
    }); 

    // Display the output 
    System.out.println(sb); 
} 

Результаты:

3, 1, 1, 2, 2 
1

подсчитать частоту букв, что вы можете сделать, это:

public static void count_freq(String str) 
{ 
    int []count = new int[256]; 
    for(int i=0;i<str.length();i++) 
    { 
     count[str.charAt(i)]++; 
    } 
} 
Смежные вопросы