java文件中出现最多的前n个单词
2024-09-06 23:51:19
将文件打开,之后每读入一次,最后按空格进行分割。存入到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();
}
}
最新文章
- PostGIS(解压版)安装
- [恶趣味]搞了下局域网内的arp网络欺骗
- 如何用Java代码列出一个目录下所有的文件?
- hdu1071(抛物线弓形面积阿基米德算法)
- Hibernate工作原理及为什么要用?
- <;<;编写可维护的JavaScript>;>;之避免使用全局变量
- 【BZOJ】【2631】Tree
- Q_INVOKABLE与invokeMethod用法全解
- 【POJ 1830】 开关问题 (高斯消元)
- Weibo SSO认证 和初次请求数据
- 【技术贴】xp任务栏字体变大变小
- 九、 合成(Composite)模式 --结构模式(Structural Pattern)
- Form提交表单页面不跳转
- UDP单播和组播使用SO_REUSEADDR 测试结果
- request.getParameterValues 出现 [Ljava.lang.String;@ 错误
- B-Tree与B+Tree简明扼要的区别
- plsql导入.dmp, .sql步骤
- leetcode 103
- BP算法的矩阵推导
- wordcloud制作logo
热门文章
- 题解 NOIP2018【赛道修建】—— 洛谷
- go源码分析(四) net包获取主机ip 子网掩码相关分析
- video.js 视频自动全屏播放
- Analysis of endogenous peptides released from osteoarthritic cartilage unravels novel pathogenic markers (解读人:李琼)
- redis相关命令及应用场景
- Mysql性能优化:为什么要用覆盖索引?
- CF1324A Yet Another Tetris Problem 题解
- JavaScript语法记要
- HDU 1754 I hate it 树状数组维护区间最大值
- 2020年最新版Web前端学习路线图-前端小白入门必读-pink老师推荐