单词统计1

您所在的位置:网站首页 26个字母出现的频率 单词统计1

单词统计1

2023-02-23 06:50| 来源: 网络整理| 查看: 265

课上的时候,根据老师的要求。完成了如下几步java

1.统计文章中26个英文字母个数及频率数组

2.统计文章中单词个数,单词出现的频率,按降序排列,并能按照输入的个数,进行指定数量的输出。app

代码沿用了以前上学期中统计单词的代码,map做为一个容器 Map map = new HashMap();(结合百度的我的理解)ide

代码中缺乏排序,本身的思路是建立数组,存储频率,可是在运行中,出现运行以后没有结果的问题,多是复杂度过高,或者是代码逻辑存在问题。ui

package words; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; public class Words { public static String txtString(File file){ StringBuilder result = new StringBuilder(); try{ BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件 String s = null; while((s = br.readLine())!=null){//使用readLine方法,一次读一行 result.append(s/*+System.lineSeparator()*/); } br.close(); }catch(Exception e){ e.printStackTrace(); } return result.toString(); } public static void findEnglishNum(String text){ //找出全部的单词 String[] array = {".", " ", "?", "!","“"}; for (int i = 0; i < array.length; i++) { text = text.replace(array[i],","); } String[] textArray = text.split(","); //遍历 记录 Map map = new HashMap(); double sum=0.00; for (int i = 0; i < textArray.length; i++) { sum++; String key = textArray[i]; //转为小写 String key_l = key.toLowerCase(); if(!"".equals(key_l)){ Integer num = map.get(key_l); if(num == null || num == 0){ map.put(key_l, 1); }else if(num > 0){ map.put(key_l, num+1); } } } //输出到控制台 System.out.println("各个单词出现的频率为:"); Iterator iter = map.keySet().iterator(); String [] a = new String [1000000]; int []b=new int [100000]; while(iter.hasNext()){ int i=0; String key = iter.next(); Integer num = map.get(key); a[i]=key; b[i]=num; i++; System.out.print(key + "\t" + num + "次"); double n=(num/sum); System.out.println(formatDouble5(n)+"%"); } /*for(int j=0;j


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3