需求分析:
1.读取小说,把小说字储存在TreeMap集合中,其中key值储存字,value储存统计字个数;
2.把取出的key,通过key得到value进行统计并排序取前10
3.定义方法,计算百分比
实现代码如下:
package com.day04;
import java.io.*

/** 案例:读一篇小说,统计每个字符出现的次数,然后取出前十位,计算其占全文百分比*/
public static void main(String[] args) throws Exception {// TODO 自动生成的方法存根// 1 创建文件对象File file = new File("src//com//day04//盗墓笔记.txt");// 2 读取文件Reader fr = new BufferedReader(new FileReader(file));// 3定义一个map集合存储字符和字符的数目final Map<Character, Integer> map = new HashMap<Character, Integer>();// 读取文件中的字符,并储存在map中int len = 0;while ((len = fr.read()) != -1) {// 把读出来的每一个数赋值给charchar c = (char) len;// 通过判断集合中是否包含该字符,如果包含就+1,不包含就取1if (map.containsKey(c)) {map.put(c, map.get(c) + 1);} else {map.put(c, 1);}}// 关闭流fr.close();// 用set集合取出map中的key值Set<Character> set = map.keySet();// set是无序且不能重复的.所以需把set转换成list,进行排序List<Character> list = new ArrayList<Character>(set);// 自定义排序(从大到小)Collections.sort(list, new Comparator<Character>() {@Overridepublic int compare(Character o1, Character o2) {// 比较map的value值大小,此处需将map改为final状态修饰符,这样才能供内部匿名类使用return map.get(o2) - map.get(o1);}});// 计算value值的总和,获取所有的value值存在一个集合中,然后再遍历集合int sum = 0;Collection<Integer> values = map.values();for (Integer value : values) {sum += value;}// for循环遍历list前10for (int i = 0; i < 10; i++) {char c = list.get(i);int value = map.get(c);System.out.println(c + "-----" + value + "----" + f(value, sum)+ "%");}
}
/** 创建方法:计算百分比*/
public static String f(int value, int sum) {// NumberFormat nf = NumberFormat.getInstance();// nf.setMaximumFractionDigits(2);double db = (((double) value / sum) * 100);DecimalFormat df = new DecimalFormat("0.00");return df.format(db);
}

}
输出结果如下

java代码:统计一本小说中的数字,并计算前10所占百分比相关推荐

  1. python中列表用某个数字出现的次数_Python实现统计给定列表中指定数字出现次数的方法...

    本文实例讲述了Python实现统计给定列表中指定数字出现次数的方法.分享给大家供大家参考,具体如下: 直接看实现: #!usr/bin/env python #encoding:utf-8 ''''' ...

  2. java利用正则截取字符串中的数字

    java利用正则截取字符串中的数字 String str = "xxx第47297章33";String regex = "\\d*";Pattern p = ...

  3. java代码统计工具

    java代码统计工具 http://download.csdn.net/detail/china8848/557296

  4. java代码怎么在cmd中运行?cmd怎么打开java代码?

    java代码怎么在cmd中运行是一个比较简单的问题,但还是有很多人频繁询问,今天本篇文章为大家统一解答一下这个问题. java代码怎么在cmd中运行? 1.首先用记事本写一个简单的Java程序,保存成 ...

  5. c语言学习-从键盘上输入100个字符,统计其中字母、每个数字和其它字符的个数及其百分比

    从键盘上输入100个字符,统计其中字母.每个数字和其它字符的个数及其百分比 程序流程图: 代码: #include<stdio.h> void main() {char ch[100]; ...

  6. python统计出现次数最多的词语_python编程:统计文件中出现次数最多的前10个词,并按出现次数排列它们...

    python编程:统计文件中出现次数最多的前10个词,并按出现次数排列它们. 下面我编写的这个程序可以用作:统计文件中所有的字符数.行数.出现次数最多的单词. # -*- coding:utf-8 - ...

  7. java代码统计收藏量_干货收藏 | 35个Java 代码性能优化总结(上)

    原标题:干货收藏 | 35个Java 代码性能优化总结(上) 前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这 ...

  8. java基础—统计一个字符串中各个字符出现的次数

    统计一个字符串中各个字符出现的次数 import java.util.Iterator; import java.util.Set; import java.util.TreeMap;public c ...

  9. js 中 java 代码_在js中嵌套java代码

    jsp中有时候在js中操作某些java后台传递过来的数据逻辑比较复杂,比如list内容的遍历,可以直接在页面上添加java脚本来执行内容,代码如下: //在js中插入java代码操作 //取出java ...

最新文章

  1. 二十九、基本分页存储管理的基本概念
  2. 网站前中期外链优化少不了这三点!
  3. shell脚本:批量检查并更改MySQL数据库表的存储引擎工作中总结
  4. 什么是缓存一致性问题?如何解决呢?
  5. Teams Bot开发系列:Middleware
  6. Delphi格式化函数Format FormatDateTime和FormatFloat
  7. 关于手机端适配的问题(rem,页面缩放)
  8. DirectX SDK (June 2010)安装遇到Error Code S1023
  9. 3D开发-AR.js 自定义Marker
  10. 光纤通道FC存储交换机的常见问题详解
  11. 非计算机专业,如何学习计算机视觉
  12. Photoshop图层混合算法
  13. 问题 C: 小写转大写
  14. 一文搞懂K-means聚类算法
  15. Win7系统网络连接图标显示红叉但可以正常上网怎么办
  16. 大数据战略上升为国家战略,悄悄告诉你大数据大牛都在读的8本书
  17. 亿图图示使用方法记录
  18. 《红面书生》的算法博客
  19. 机器学习多分类器有哪些
  20. java实现整理药名

热门文章

  1. 智慧城市PPP:三大困惑影响成功率
  2. Oracle 11G OCP 1Z0-053 457
  3. MD5 加密算法 - C++ 实现
  4. 高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)
  5. 自媒体平台爆文素材从哪看?大家都是怎么出爆文的?
  6. 7-9 排座位 并查集
  7. 区块链技术在汽车无人驾驶领域的应用
  8. C语言 | 六种方法输出100以内的素数 | 代码演示
  9. 个人计算机上的服务器怎么打开,电脑服务器怎么打开
  10. python自动发弹幕_一个直播弹幕机器人诞生过程,Python制作自动发送弹幕小程序...