题目要求:

  指定文件目录, 但是会递归遍历目录下的所有子目录,输出文件中所有不重复的单词,按照出现次数由多到少排列。

源码:

  

package word;
import java.io.File; 
import java.io.InputStreamReader; 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.io.FileWriter; 
 
public class Demo{ 
 void getsize(File file)
 {if(file.isFile())
  
 {System.out.println(file.getName()+":");
  int n=0;
 int flag;
 int m=0;
     String word[]=new String[100000];
  int sum[]=new int[100000];
  String hang[]=new String[1000];
  List<String> list;
  String w;
 int i=0;
    try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw 
        /* 读入TXT文件 */ 
        //String pathname = "D:\\eclipse\\workspace\\most\\src\\word\\b.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径 
        //File filename = new File(pathname); // 要读取以上路径的input。txt文件 
        InputStreamReader reader = new InputStreamReader( 
                new FileInputStream(file));
        BufferedReader br = new BufferedReader(reader); 
        String line = ""; 
        line = br.readLine(); 
        while (line != null) { 
         
         StringTokenizer st2 = new StringTokenizer(line, ",,., ,!,?,“,”,‘,-,'");
          i=0;
            while (st2.hasMoreElements()) {
             hang[i]=String.valueOf(st2.nextElement());
             
             hang[i]=hang[i].toLowerCase();
             m++;
              list = Arrays.asList(word);
              flag = list.indexOf(hang[i]);
             if(flag==-1)
             {
              word[n]=hang[i];
              sum[n]++;
              n++;
             }
             else
             {
              sum[flag]++;
             }
             
             i++;
            }
          
         
         
            line = br.readLine(); // 一次读入一行数据
        } 
      
    } catch (Exception e) { 
        e.printStackTrace(); 
    }
   
    int ma=0;
    int biao=0;
    for(int j=0;j<n-1;j++)
    {
     ma=sum[j];
     biao=j;
     w=word[j];
     for(int k=j+1;k<n;k++)
     {
      if(ma<sum[k])
      {
       ma=sum[k];
       biao=k;
      }
     }
     sum[biao]=sum[j];
     sum[j]=ma;
     word[j]=word[biao];
     word[biao]=w;
    }
  
  
    for(int j=0;j<n;j++)
    {
     System.out.println(sum[j]);
     System.out.println(word[j]);
    }
 }
 else
 {
  File[] f1 = file.listFiles();
  for(File x:f1)
  {
   getsize(x);
  }
  
 }
}  
    public static void main(String args[]) { 
     Demo t=new Demo();
     t.getsize(new File("E:\\新建文件夹"));
      
    } 
}

关于TXT文件中英文单词出现频率排序问题的更多相关文章

  1. 关于TXT文件中英文字母出现频率排序问题

    题目要求: 输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位. 源码: package demo; import java.io.File;  ...

  2. 文件内容统计:对任意给定的.txt文件进行内容的字符数、行数、单词数进行统计

    项目源码地址:https://gitee.com/xjtsh/projects 功能实现: wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file ...

  3. C++读取文件统计单词个数及频率

    1.Github链接 GitHub链接地址https://github.com/Zzwenm/PersonProject-C2 2.PSP表格 PSP2.1 Personal Software Pro ...

  4. java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  5. 通过R语言统计考研英语(二)单词出现频率

    通过R语言统计考研英语(二)单词出现频率 大家对英语考试并不陌生,首先是背单词,就是所谓的高频词汇.厚厚的一本单词,真的看的头大.最近结合自己刚学的R语言,为年底的考研做准备,想统计一下最近考研英语( ...

  6. 读取JDK API文档,并根据单词出现频率排序

    1,拿到 API 文档 登录 https://docs.oracle.com/javase/8/docs/api/ , 选中特定的类,然后 copy 其中的内容, 放入 TXT 文件中 , 2,读取T ...

  7. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  8. 网站SEO优化之Robots.txt文件写法。

    作为网站开发者或网站管理员一定知道网站对搜索引擎的优化有多重要,好的网站不仅要有漂亮的界面,良好的用户体验,还要有较高的更新频率.要被百度.google这样的搜索引擎大量收录,才能增加网站展示量,访问 ...

  9. C++读写TXT文件中的string或者int型数据以及string流的用法

    对文件的读写操作是我们在做项目时经常用到的,在网上看了很多博客,结合自身的项目经验总结了一下,因此写了这篇博客,有些地方可能直接从别的博客中复制过来,但是都会注明出处. 一.文件的输入输出 fstre ...

随机推荐

  1. AcWing 849. Dijkstra求最短路 I 朴素 邻接矩阵 稠密图

    //朴素Dijkstra 边权都是正数 稠密图:点和边差的比较多 #include<cstring> #include<iostream> #include<algori ...

  2. c/c++学习01

    c++指针初始赋值: //指针初始赋值 int* a = new int(3); //第二种赋值 int 初始值 = 100; int *b = &初始值; //由new分配的内存块通常使用过 ...

  3. 路飞-自定义User表和Media配置

    user模块User表 创建user模块 """ 前提:在 luffy 虚拟环境下 1.终端从项目根目录进入apps目录 >: cd luffyapi & ...

  4. 解决teamviewer试用期到期的方法

    Teamviewer是一款远程控制软件,使用过程中系统弹出“Teamviewer试用版已到期”的提示, 需要用户购买许可证或延长试用期才能继续使用,解决teamviewer试用期到期问题步骤如下: 出 ...

  5. js + jquery 实现分页区翻页

    简单来说,情况是这样的,假如做好了对动漫每一集进行分页,如下图: 但当分页太多就会变得不能看,而且前后箭头也不能只是摆设. 想要得到类似这样效果: 网上搜了一会翻页相关的库没什么效果,也不太合适自己的 ...

  6. JDBC--处理Blob

    1.LOB(Large Objects)大对象,是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储多达4GB的数据) --LOB分类两种类型:1)内部LOB: 2)外部LOB: -- ...

  7. mybatis-01-简单概述基础点

    1.mybatis的优点 mybatis:半自动化持久化框架 sql(专注数据)和java编码(专注业务)分离 可使用简单的xml或者注解用于配置和原始映射 将接口和java中的pojo映射成数据库中 ...

  8. AtCoDeer and Election Report

    问题 G: AtCoDeer and Election Report 时间限制: 1 Sec  内存限制: 128 MB[提交] [状态] 题目描述 AtCoDeer the deer is seei ...

  9. 17,a:img的alt和title有何异同? b:strong与en的异同?

    alt(alt text):为不能显示的图像,窗体或者applets的用户代理,alt属性用来指定替换文字.替换文字的语言用lang属性来指定. eg:下例中将图像作为链接来使用 <a href ...

  10. socketserver tcp黏包

    socket (套接字) tcp(黏包现象原因) 传输中由于内核区缓冲机制(等待时间,文件大小),会在 发送端 缓冲区合并连续send的数据,也会出现在 接收端 缓冲区合并recv的数据给指定port ...