为了账号安全,请及时绑定邮箱和手机立即绑定

如何在java中制作频率直方图

如何在java中制作频率直方图

萧十郎 2022-01-12 16:48:36
我正在尝试创建一个读取文件并打印出以下内容的代码:文件的行数每个字母的频率每个非字母字符的频率我想为字母和数字的频率创建一个直方图,但我似乎无法找到解决方案。如果有什么我希望输出看起来像这样:A ***** - 5B *** - 3C ******* - 7我的输出如下所示:***************************************************************A 263B 130C 50等等。
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

这就是你完成任务的方式。它会计算小写字母的数量并打印除频率之外的星星,就像您想要的那样。


这是一般代码(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。


我希望这有帮助!如果您有任何问题,请在下面发表评论。


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信