将文件打开,之后每读入一次,最后按空格进行分割。存入到map里面之后进行相应的比较输出操作。并将相应的内容输出到文件里面。

package com.keshangone;
//将想要输出的数据写入新的文件里面
//将想要输出的数据写入新的文件里面
import java.util.*;
import java.io.*;
import java.util.Scanner;
public class qianword
{
static int ha=0;
static Scanner sc=new Scanner(System.in);
public static void main(String[] args)throws IOException
{
Map<String,Integer> map=new HashMap<>();//通过map保存映射,和数组类似
File file=new File("D:\\新建文件夹 (6)\\wen.txt");
FileReader fr=new FileReader(file);
try
{
BufferedReader bd=new BufferedReader(fr);
String wen=null;
while((wen=bd.readLine())!=null)//读入一行数据
{
String []word=wen.split(" ");//通过空格将整行数据分成多个字符串并保存在字符串数组里
ha+=word.length;
for(int i=0;i<word.length;i++)
{
if(word[i].equals(" "))
{
continue;
}
if(map.containsKey(word[i]))//检查集合中是否有这个元素
{
Integer a=map.get(word[i]);
a++;
map.put(word[i], a);//为他出现的次数加一
}
else
map.put(word[i],1);//如果从未出现过就将他的values赋值为一 }
map.put(" ",0);
}
fr.close();
}catch (Exception e)//程序的异常处理
{
e.printStackTrace();
}
File file2=new File("D:\\新建文件夹 (6)\\wen1.txt");
if(!file2.exists())
{
try
{
file2.createNewFile();
System.out.println("数据输出的指向文件不存在已经为您新建一个以保留运行结果请继续操作");
}
catch(Exception e)
{
e.printStackTrace();
}
}
FileWriter fw=new FileWriter(file2);
BufferedWriter bw=new BufferedWriter(fw);
System.out.println("输入个数");
Integer shu=sc.nextInt();
Integer max1;
String max2="";
for(int b=1;b<=shu;b++)
{
max1=0;
max2=null;
//找出出现次数最多的单词
Set<String> set=map.keySet();//构建map集合所有key对象集合
Iterator <String> it=set.iterator();//创建集合迭代器
while(it.hasNext())
{
String key1=it.next();
Integer a2=map.get(key1);
if(a2>max1)
{
max1=a2;
max2=key1;
}
}
//主要是为了判断是否会出现出现次数相同的单词
Set<String> set2=map.keySet();//构建map集合所有key对象集合
Iterator <String> it2=set2.iterator();//创建集合迭代器
while(it2.hasNext())
{
String key2=it2.next();
Integer a3=map.get(key2);
if(a3==max1)//判断是否有出现次数相同的字母,如果有的话全部输出
{
double ans=max1*1.0/ha; bw.write("出现次数排在第 "+b+" 位的单词是 "+key2+" 出现次数是 "+String.format("%.2f", ans*100)+"%");
bw.newLine();
System.out.println("出现次数排在第 "+b+" 位的单词是 "+key2+" 出现次数是 "+String.format("%.2f", ans*100)+"%");
map.put(key2,0);//输出之后让他的values变为0,防止阻碍后面的判断
}
} }
System.out.println("相关数据已经全部写入相应的文件夹里(在屏幕上也进行了显示)");
bw.close();
fw.close();
}
}

java文件中出现最多的前n个单词的更多相关文章

  1. 用java实现输出英文小说飘中出现次数最多的前N个单词(附:使用文件读写)

    本文参考于:https://blog.csdn.net/u014204432/article/details/40348839 一.题目 输出单个文件(<飘> 英文版)中的前 N 个最常出 ...

  2. sort +awk+uniq 统计文件中出现次数最多的前10个单词

    实例cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head -100 统计文件中出现次数最多的前10个单 ...

  3. 转载:Linux命令经典面试题:统计文件中出现次数最多的前10个单词

    1.使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词 主要考察对sort.uniq命令的使用,相关解释 ...

  4. 一个.java文件中是否可以有多个类

    前段时间,有个同事问到我这个问题:一个.java文件中是否可以有多个类? 答案:可以有多个类,但最多只能有一个被public修饰的class. 且若这个.java文件中有一个public类型的clas ...

  5. Intellij Idea 工具在java文件中如何避免 import .*包

    Intellij Idea工具在java文件中怎么避免import java.utils.*这样的导入方式,不推崇导入*这样的做法!Editor->Code Style->Java-> ...

  6. JAVA文件中获取路径及WEB应用程序获取路径方法

    JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...

  7. 一个.java文件中可以有几个同级类

    1.在一个.java文件中可以有几个类.修饰符只可以public abstract final和无修饰符,不能是其他的private等修饰符.2.public修饰的只能有一个,且要与文件名相同 若没有 ...

  8. Java文件中为什么只能有一个public修饰的类, 并且类名还必须与文件名相同

    当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元).每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包 ...

  9. Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量。

    myeclipse和eclipse集成编译软件,都提供了一个快捷键用来批量重命名变量:Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量.扩展知识:如果想要重命名文件名,又不想手动 ...

随机推荐

  1. 大数据存储利器 - Hbase 基础图解

    由于疫情原因在家办公,导致很长一段时间没有更新内容,这次终于带来一篇干货,是一篇关于 Hbase架构原理 的分享. Hbase 作为实时存储框架在大数据业务下承担着举足轻重的地位,可以说目前绝大多数大 ...

  2. vue 接口 对象数组的传入传出

    数组传入 对象的话用{...obj} <selectFile :tableData="[...tableData]" @uploadSuccess="data =& ...

  3. JVM入门必看——JVM结构

    转载自:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让 ...

  4. python turtle笔记

      Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它 ...

  5. 6个出色的Kubernetes发行版,哪款最适合你?

    作者简介 Christopher Tozzi,自2008年来以自由职业者的身份对Linux.虚拟化.容器.数据存储及其相关主题进行报道. 本文来自Rancher Labs 时至今日,通过Kuberne ...

  6. MySQL基础篇(07):用户和权限管理,日志体系简介

    本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL用户 1.基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个roo ...

  7. Filebeat快速入门

    Filebeat快速入门 本笔记整理于https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html ...

  8. ysoserial分析【二】7u21和URLDNS

    目录 7u21 gadget链分析 hashCode绕过 参考 URLDNS 7u21 7u21中利用了TemplatesImpl来执行命令,结合动态代理.AnnotationInvocationHa ...

  9. CodeForces 196B Infinite Maze

    Infinite Maze time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  10. Java集合框架要点概括(Core Knowledge of Java Collection)

    目录 有哪些集合类 Set类 Queue类 List类 Map类 HashMap的实现原理,是否线程安全,如何使其做到线程安全 HashMap的实现原理 HashMap的数据结构 HashMap的存取 ...