我正在尝试创建一个读取文件并输出以下内容的代码:
我想为字母和数字的频率创建直方图,但似乎找不到解决方案。如果有的话,我希望输出看起来像这样:
A ***** - 5
B *** - 3
C ******* - 7
我的输出如下:
*********************
*********************
*********************
A 263
B 130
C 50
等
答案 0 :(得分:0)
这是您执行任务的方式。它会计算小写字母的数量,并根据需要打印除频率外的星星。
以下是常规代码(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个元素。在减去97为负数后,还必须检查converted
(在第二个for循环中),如果是,则应加58。
我希望这会有所帮助!如果您有任何问题,请在下面评论。