找《飘》 中最常用的N个单词。

1,题目:输出单个文件(《飘》 英文版)中的前 N 个最常出现的英语单词,并将结果输入到文本文件中。

2,设计思路:

1),按行依次读取文件并按空格,逗号,圆点为分割标志将单词分割存到数组中。

2),将数组去重存到另一个数组中。

3),将字符串类型和整型数组的下标一 一对应用循环算出每一个单词出现的次数存在整型数组中。

4),将字符串类型和整型数组的下标一 一对应,按单词出现的数目排序。

5),将前N个单词输出到文件中。

3,代码:

import java.io.File;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class Dancitongji {
private static String str="";
private static Scanner sc=new Scanner(System.in);
private static BufferedReader cin=null;
private static String a[]=new String[1000000];
private static String c[]=new String[10000000];
private static int b[]=new int[1000000];
private static int length=0;
private static int length1=0;
private static int nn=0;
private static int j=0;
//private static Boolean false;
public static void cun() throws IOException {//将单词存到数组a
{ while(str!=null) {
int i=0;
str=str.toLowerCase(); //把大写改成小写
for(i=0;i<str.length();i++) {
if((str.charAt(i)>96&&str.charAt(i)<123)) {
a[j]=a[j]+str.charAt(i);
}
if(str.charAt(i)==' '||str.charAt(i)==','||str.charAt(i)=='.') {
if(!a[j].equals("")) {
j=j+1;
a[j]="";
}
} }
str=cin.readLine();
}
length=j;
}
}
public static void show() {//显示
for(int k=0;k<nn;k++) {
System.out.println(c[k]+"\t"+b[k]);
}
}
public static void Sorting() {//排序
int t3=0;
int t2=0;
String sr="";
for(int i=0;i<length1-1;i++) {
t3=i;
for(int j=i+1;j<length1;j++) {
if(b[t3]<b[j]) {
t3=j;
}
}
if(t3!=i) {
t2=b[i];
b[i]=b[t3];
b[t3]=t2;
sr=c[i];
c[i]=c[t3];
c[t3]=sr;
}
}
}
public static void Statistics(){//去重
for(int k=0;k<length;k++) {
b[k]=0;
}
c[0]=a[0];
int tt=1;
Boolean rt=true; for(int i=1;i<length;i++) {
rt=false;
for(int j=0;j<tt;j++) {
if(a[i].equals(c[j])) {
rt=true;
break;
}
}
if(!rt) {
c[tt]=a[i];
tt++;
}
} length1=tt;
for(int i=0;i<length1;i++) {
for(int j=0;j<length;j++) {
if(c[i].equals(a[j])) {
b[i]++;
}
}
}
}
public static void Readfile() {
File file=new File("D:\\JAVA\\java 书\\3.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
cin=new BufferedReader(read);
str=cin.readLine();
cun();
cin.close();
read.close();
}
catch(IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
} public static void Writefile() throws IOException {
File file=new File("D:\\JAVA\\java 书\\2.txt");
if(!file.exists())
file.createNewFile();
FileWriter write = new FileWriter(file,true);
BufferedWriter out=new BufferedWriter(write);
for(int i=0;i<nn;i++){
StringBuffer sb=new StringBuffer();
out.write("这是第"+(i+1)+"个: ");
out.write(c[i]+"\t"+b[i]);
out.write("\r\n"); }
out.close();
}
public static void main(String[] args) throws IOException {
System.out.println("请输入您要统计前几个最常出现的单词:");
nn=sc.nextInt();
a[0]="";
Readfile();
Statistics();
Sorting();
show();
Writefile(); } }
 

4,运行测试:

找《飘》 中最常用的N个单词。的更多相关文章

  1. 关于codeblock中一些常用的快捷键(搬运)

    关于codeblock中一些常用的快捷键(搬运) codeblock作为一个常用的C/C++编译器,是我最常用的一款编译器,但也因为常用,所以有时为了更加快速的操作难免会用到一些快捷键,但是因为我本身 ...

  2. HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头

    http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类 ...

  3. EL表达式 JSTL中的常用EL函数 动态数据的国际化

    ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...

  4. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

  5. commons-lang3-3.2.jar中的常用工具类的使用

    这个包中的很多工具类可以简化我们的操作,在这里简单的研究其中的几个工具类的使用. 1.StringUtils工具类 可以判断是否是空串,是否为null,默认值设置等操作: /** * StringUt ...

  6. 25.mysql中的常用工具

    25.mysql中的常用工具25.1 mysql客户端连接工具跳转至mysql安装目录下的bincd C:\Program Files\MySQL\MySQL Server 5.7\binmac下cd ...

  7. springboot中的常用注解

    springboot中的常用注解个人觉得springboor中常用的注解主要可以分为三种:放入容器型注解.从容器中取出型注解和功能型注解.其中的放入容器型和从容器中取出型就是我们平时所说的控制反转和依 ...

  8. WebApi-路由机制 Visual Studio 2015中的常用调试技巧分享

    WebApi-路由机制   一.WebApi路由机制是什么? 路由机制通俗点来说:其实就是WebApi框架将用户在浏览器中输入的Url地址和路由表中的路由进行匹配,并根据最终匹配的路由去寻找并匹配相应 ...

  9. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

随机推荐

  1. 新闻网大数据实时分析可视化系统项目——8、Flume数据采集准备

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并 ...

  2. Linux命令:date命令

    date命令作用:显示和设置系统的日期和时间 一.设置系统日期时间 格式:date [MMDDhhmm[[CC]YY][.ss]] 举例:将当前系统时间改为 2020年10月1日12点10分 # da ...

  3. 一、Linux&配置,依赖安装&Tomcat,Mysql,jdk安装

    基础知识: 1 OS Operation System 作用:控制硬件,服务软件 2 VMware虚拟机: 虚拟出一台计算机环境 配置两个虚拟网卡,适配器里查看 3 在虚拟机上安装操作系统Linux ...

  4. 发送短信-----用restful 校验规则

    我们的需求如下 1. 获取手机号 . 手机格式校验 . 生成随机验证码 . 验证码发送到手机上 . 把验证码+手机号保留(30s过期) 复习 我们在有表的情况下的序列化 class MessageSe ...

  5. 学习Linux让我进入了知名企业

    说起我学习Linux的原因是多方面的,大学时我学的是物理学师范专业,有部分计算机课程,但我觉得这些课程没什么实际作用,我自己对计算机比较感兴趣,我利用业余时间学习了很多计算机技术.在大学期间我参加了很 ...

  6. Docker commit 命令

    docker commit :从容器创建一个新的镜像. 语法 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提 ...

  7. 树莓派 Raspberry 软件源更改 看门狗启用

    看门狗无法在pi1上执行,似乎后更高级的pi上面才可用 1.替换脚本 下面脚本请直接复制到终端执行!! 适用于raspbian-stretch(基于Debian9) sudo -s echo -e & ...

  8. Python中基于Unpacking与Packing进行分割,组合操作的嵌套元组数据结构的应用

    对于二叉树,图等,Python可采用基于Packing与Unpacking形成的嵌套元组数据结构来模拟,这里Packing指,比如a=b,c则,a就成了一个包含b,c的元组,Unpacking是指,比 ...

  9. 二、Vue组件(component):组件的相互引用、通过props实现父子组件互传值

    一.组件各部分说明及互相引用 1.一个vue组件由三个部分组成 Template 只能存在一个根元素 2.Script 3.Style scoped:样式只在当前组件内生效 1.1 组件的基本引用代码 ...

  10. python用于web题里写解密脚本

    题源自bugku里的WEB3 选择选项让他停止,F12后出现如下代码,一看数字就知道是ASC: 复制出来,写pyhton脚本如下,在编译器里跑一下 s='KEY{J2sa42ahJK-HS11III} ...