Как сделать частотную гистограмму в Java - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь создать код, который читает файл и выводит следующее:

  • количество строк в файле
  • частота каждой буквы
  • частота каждого не алфавитного символа

Я хочу создать гистограмму для частоты букв и цифр, но я не могу найти решение вокруг этого. Во всяком случае, я хотел бы, чтобы вывод выглядел так:

A ***** - 5
B *** - 3
C ******* - 7

Мой вывод выглядит так:

*********************
*********************
*********************
A 263
B 130
C 50

и т.д.

1 Ответ

0 голосов
/ 11 ноября 2018

Вот как вы делаете задачу. Он подсчитывает количество строчных букв и печатает звезды в дополнение к частоте, как вы и хотели.

Вот общий код (paragraph - это строка, содержащая содержимое вашего файла):

int[] lettercount = new int[26];
for(int i = 0; i < 26; i++){
    //Set every single number in the array to 0.
    lettercount[i] = 0;
}

for(char s : paragraph.toCharArray()){
    int converted = (int) s;
    converted -= 97;
    if(converted >=0 && converted <=25){
        lettercount[converted] += 1;
    }
}

//Print out the letter with the frequencies.
for(int i = 0; i < 26; i++){
    char convertback = (char) (i+97);
    String stars = "";
    for(int j = 0; j < lettercount[i]; j++){
        stars += "*";
    }
    System.out.println(convertback + " " + stars + " - " + lettercount[i]);
}

Это должно работать для строчных букв. Если вы хотите использовать заглавные буквы, lettercount[] должно быть длиной 52 элемента. Вы также должны проверить, если converted (во втором цикле for) , после вычитания 97 будет отрицательным, и если это так, вы добавите обратно 58.

Надеюсь, это поможет! Если у вас возникли проблемы, просто прокомментируйте ниже.

...