目录
一、题目要求二、分析三、部分代码展示四、全部代码五、结果截图(部分)六、a.txt文本一、题目要求
有一个英文的文本文档a.txt , 需要读取该文本文档并计算文档中英文字符出现的次数,最后打印输出
(资料图)
注意:map集合只能放入英文字符,不能够有空格数字引号等字符,所以在写代码的时候需要额外的进行判断,还需要考虑的一点是英文字符是有大小写的,但是统计在map里面就不区分大小写
二、分析
1、需要先获取文档的路径,并创建HashMap作为存放次数的容器,key的类型为Character存放字符,value的类型为Integer存放次数
2、通过文档输入流读取文档中的内容,得到一串字符串
3、遍历字符串,获得字符串中每一个字符
4、判断字符在map集合中是否存在
5、不存在则将其放入
6、存在则将map集合中字符key对应的次数value取出,然后加一,再通过put方法重新放回,起到更新次数的效果
三、部分代码展示
1、创建Map列表及文件路径
FileInputStream fis = null; HashMapmap = new HashMap<>();
2、获得文本中的内容并返回为字符串
while ((len = fis.read(b))!=-1){ // 获得文件中的字符串 s = new String(b, 0, len); }
3、遍历字符串并获得每个字符再进行相关判断后放入map集合中
// 遍历字符串得到每一个字符 for (int i = 0; i < s.length() ; i++) { char c = s.charAt(i); // 判断是否是字母 if ( ((c>="a")&&(c<="z")) || ((c>="A")&&(c<="Z"))){ // 将字母转换为小写 char nc = Character.toLowerCase(c); // 判断map集合中是否有该键 if (map.containsKey(nc)){ Integer num = map.get(nc); num++; map.put(nc,num); }else { map.put(nc,1); } } }
4、遍历map集合得到数据
// 遍历map集合得到数据 Setkey = map.keySet(); for (Character c : key) { Integer value = map.get(c); System.out.println("key="+c+"----"+"value="+value); }
四、全部代码
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Set; public class totalNum { public static void main(String[] args) throws IOException { // todo 统计字母出现的次数 FileInputStream fis = null; String s = null; HashMapmap = new HashMap<>(); try { fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-25\\src\\a1\\a.txt"); byte[] b = new byte[1024]; int len = 0; while ((len = fis.read(b))!=-1){ // 获得文件中的字符串 s = new String(b, 0, len); } // 遍历字符串得到每一个字符 for (int i = 0; i < s.length() ; i++) { char c = s.charAt(i); // 判断是否是字母 if ( ((c>="a")&&(c<="z")) || ((c>="A")&&(c<="Z"))){ // 将字母转换为小写 char nc = Character.toLowerCase(c); // 判断map集合中是否有该键 if (map.containsKey(nc)){ Integer num = map.get(nc); num++; map.put(nc,num); }else { map.put(nc,1); } } } // 遍历map集合得到数据 Set key = map.keySet(); for (Character c : key) { Integer value = map.get(c); System.out.println("key="+c+"----"+"value="+value); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { fis.close(); } } }
五、结果截图(部分)
六、a.txt文本
I am happy to join with you. today in what will go down in history ,as the greatest demonstration for freedom in the history of our nation…
Five score years ago, a great American, in whose symbolic shadow we stand today, signed the Emancipation Proclamation. This momentous decree came as a great beacon light of hope to millions of Negro slaves who had been seared in the flames of withering injustice. It came as a joyous daybreak to end the long night of bad captivity.
到此这篇关于Java利用Map实现计算文本中字符个数的文章就介绍到这了,更多相关Java计算文本字符个数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 2亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 3现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 4如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 5AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 6转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 7充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 8好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 9名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 10亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战