今天老师要求做查找英文文章中最高频的词  文章用文本储存

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Mananger {
 private final int MAX = 1000;
 private String[] st;
 private String s;         //用来转换StringBuilder类型
 private words[] a = new words[MAX];       //声明一个类数组
    private StringBuilder str=new StringBuilder();    //为了储存从文本中导出的字符串
 /*
  * 文件内容的导出
  */
 public  void output_1() throws IOException
   {
  
  File a=new File("information.txt");
     FileInputStream b = new FileInputStream(a);
     InputStreamReader c=new InputStreamReader(b,"UTF-8");
     {
      BufferedReader bufr =new BufferedReader(c);
      String line = null;
      while((line = bufr.readLine())!=null){
      st=line.split("[ ,?!.'\"\t]");     //字符串变成字符串数组,设置多个分割符
     for(int i=0;i<st.length;i++)
      str.append(st[i]+" ");    //将字符串添加到str类中
      }
      bufr.close();     
     }
     c.close();
     b.close();
      s=""+str;          //将str转换成String类
        st=s.split(" ");    //将s转换成字符串数组
   }
 
 /*
  * 用来比较字符串数组中哪个单词出现的频率多
  */
 public String Competive() throws IOException {
  String Max;
  output_1();
  int m=1;  
  int max=0;
  a[0]=new words();       //每次调用声明的a类数组都必须给它开辟一个空间
  a[0].Words=st[0];
  a[0].Number = 1;
  for(int i=1;i<st.length;i++) {   
   boolean flag = true;
   for(int j=0;j<m;j++) {
    if(a[j].Words.equals(st[i])) {   //如果字符串相同则它们出现的次数加一
     a[j].Number++;
     flag = false;
     break;
    }
   }
   if(flag) {   //将不同的字符串传入
    m++;
    a[m-1]=new words();
    while(st[i].equals(" "))
     i++;
    a[m-1].Words=st[i];
    a[m-1].Number = 1;
   }
  }
  for(int n=1;n<m;n++) {    //比较得出出现的次数最多的那个单词
   if(a[max].Number<a[n].Number)
    max=n;
  }
  Max = a[max].Words;
  return Max;
 }
 
 public static void main(String[] args) throws IOException  {
  Mananger con = new Mananger();   //声明一个Mananger对象用来调用Competive函数
        System.out.println("出现最多的单词是:"+con.Competive()); 
 }
  
}
 
遇到的问题循环没有设置好,设置分割符,文件导出后的转换,Java中结构体的使用
问题都弄懂了感觉收获了很多

Class__Two的更多相关文章

随机推荐

  1. (4.26)sql server存储过程优化

    此博客介绍了简单但有用的提示和优化,以提高存储过程的性能. 0.with recompile:重编译 exec uspGetSalesInfoForDateRange ‘1/1/2009’, 31/1 ...

  2. 下载以及安装VMware Player Pro 64位

    1.下载地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-14.0.0-6661328.exe 2. ...

  3. Unable to cast COM object of type 'Shell32.ShellClass' to interface type 'Shell32.IShellDispatch6'.

    VS 里面的Interop.Shell32.dll(1.0) 这个版本太低了,需要高版本的(我使用的是1.2.107.0) 具体下载地址  自己找吧

  4. js计算常见操作

    如何实现数字相加 var a = 1, var b = 2, var c = a + b 这样c得出来的解果是12, 使用Number()函数可以解决这个问题,如下 var c = Number(a) ...

  5. VueI18n的应用

    .npm install vue-i18n .在 main.js 中引入 vue-i18n import VueI18n from 'vue-i18n' Vue.use(VueI18n) .在main ...

  6. 高并发负载均衡——nginx与lvs

    一.企业级web项目架构 一.企业级web项目架构图 二.架构分析 客户端通过企业防火墙发送请求 在App服务器如tomcat接收客户端请求前,面对高并发大数据量访问的企业架构,会通过加入负载均衡主备 ...

  7. 拖拽控件java版

    Button vv = new Button("vvvv");  DragSource.getDefaultDragSource().createDefaultDragGestur ...

  8. MyBatis SpringMVC映射配置注意

    applicationContext.xml中要配置 <!-- MyBatis 的 sqlSessionFactory --> <bean id="sqlSessionFa ...

  9. [LeetCode] 系统刷题5_Dynamic Programming

    Dynamic Programming 实际上是[LeetCode] 系统刷题4_Binary Tree & Divide and Conquer的基础上,加上记忆化的过程.就是说,如果这个题 ...

  10. HTTPS安全不?

    首先,它是什么?我的理解是一开始进行SSL握手,商量好将要使用哪些加密算法来通讯,或者加密方法后使用非对称的加密方法,交互一下随机数,加上一个pre-master-secrect的,然后服务端利用私钥 ...