JAVA课堂测试之查找字母和单词出现次数、频率
代码如下:没有加注释,自己研究吧。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
public class test2 {
public static void main(String[] args)throws IOException
{
List<Integer> list=new ArrayList<>();
DecimalFormat df=new DecimalFormat("######0.00");
File f = new File("piao1.txt");
FileInputStream fip = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(fip, "gbk");
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
}
System.out.println(sb.toString());
reader.close();
fip.close();
int i;
String A=sb.toString();
String M="abcdefghijklmnopqrstuvwxyz";
String temp = "";
char NUM[]=new char[A.length()];
char Z[]=new char[26];
int X[]=new int[26];
int MAX=0;
Z=M.toCharArray();
for(int k=0;k<26;k++)
{
X[k]=0;
for(i=0;i<A.length();i++)
{
NUM[i]=A.charAt(i);
if(Z[k]==NUM[i]||Z[k]==ch(NUM[i]))
{
X[k]++;
}
}
}
System.out.println("这篇文章中英文字母个数分别为:");
double sum=0;
System.out.println("////////////排序如下:");
for(i=0;i<25;i++)
for(int k=0;k<25-i;k++)
{
if(X[k]<X[k+1])
{
int temp2=X[k];
X[k]=X[k+1];
X[k+1]=temp2;
char temp3=Z[k];
Z[k]=Z[k+1];
Z[k+1]=temp3;
}
}
for(i=0;i<26;i++)
{
System.out.println(Z[i]+"字母个数为:"+X[i]);
sum=sum+X[i];
}
for(i=0;i<26;i++)
{
double jkl=(X[i])/sum*100;
System.out.println(Z[i]+"字母频率为:"+df.format(jkl)+"%");
}
StringTokenizer st = new StringTokenizer(sb.toString(),",.! \n");
String []a1=StatList(sb.toString());
int[]b1=StatList1(sb.toString());
System.out.println("//////////////////////////////");
for(i=0;i<a1.length-1;i++)
for(int j=0;j<a1.length-1-i;j++)
{
if(b1[j]<b1[j+1])
{
int temp6=b1[j];
b1[j]=b1[j+1];
b1[j+1]=temp6;
String temp7=a1[j];
a1[j]=a1[j+1];
a1[j+1]=temp7;
}
}
for(i=0;i<a1.length-1;i++)
{
System.out.println("单词:"+a1[i]+" 且出现的次数:"+b1[i]);
}
}
static char ch(char c)
{
if(!(c>=97&&c<=122))
c+=32;
return c;
}
static String[] StatList(String str) {
StringBuffer sb = new StringBuffer();
HashMap<String ,Integer> has = new HashMap<String ,Integer> (); // 打开一个哈希表
String[] slist = str.split("\\W+");
int sum=0;
int sum1=0;
for (int i = 0; i < slist.length; i++) {
if (!has.containsKey(slist[i])) { // 若尚无此单词
has.put(slist[i], 1);
sum++;
sum1++;
} else {//如果有,就在将次数加1
Integer nCounts = has.get(slist[i]);
has.put(slist[i],nCounts+1 );
}
}
int temp=0;
int temp1=0;
String []a=new String[sum];
int []b=new int[sum1];
Iterator iterator = has.keySet().iterator();
while(iterator.hasNext()){
String word = (String) iterator.next();
a[temp]=word;
temp++;
}
return a;
}
static int[] StatList1(String str) {
StringBuffer sb = new StringBuffer();
HashMap<String ,Integer> has = new HashMap<String ,Integer> (); // 打开一个哈希表
String[] slist = str.split("\\W+");
int sum=0;
int sum1=0;
for (int i = 0; i < slist.length; i++) {
if (!has.containsKey(slist[i])) { // 若尚无此单词
has.put(slist[i], 1);
sum++;
sum1++;
} else {//如果有,就在将次数加1
Integer nCounts = has.get(slist[i]);
has.put(slist[i],nCounts+1 );
}
}
int temp=0;
int temp1=0;
String []a=new String[sum];
int []b=new int[sum1];
Iterator iterator = has.keySet().iterator();
while(iterator.hasNext()){
String word = (String) iterator.next();
b[temp1]=has.get(word);
temp1++;
}
return b;
}
}



JAVA课堂测试之查找字母和单词出现次数、频率的更多相关文章
- Java 中统计文件中出现单词的次数练习
统计英文article.txt文件中出现hello这个单词的次数 这个是article.txt文件内容 { hello The Royal Navy is trying hello to play h ...
- 第十一周java课堂测试
Main.java package class_third_copy; import java.util.Scanner; import classthird.Test; import classth ...
- 用java实现输出英文小说飘中出现次数最多的前N个单词(附:使用文件读写)
本文参考于:https://blog.csdn.net/u014204432/article/details/40348839 一.题目 输出单个文件(<飘> 英文版)中的前 N 个最常出 ...
- Java中的查找算法之顺序查找(Sequential Search)
Java中的查找算法之顺序查找(Sequential Search) 神话丿小王子的博客主页 a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数 ...
- java string,需要进行首字母大写改写
java string,需要进行首字母大写改写,网上大家的思路基本一致,就是将首字母截取,转化成大写然后再串上后面的,类似如下代码 //首字母大写 public static String c ...
- Java 实现折半查找
package search; import java.util.*; /*折半查找要求线性表是有序的,假设递增 * 基本思路:R[low...high]是当前的查找区间,首先确定中间位置mid=(l ...
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
这道题题目里没有给定数据范围 我开了2005 疯狂的WA 然后开了50000, A掉 我以为自己模板理解错 然后一天没吃饭,饿得胃疼还是想着把这题A掉再去吃,谁知竟然是这样的问题,,,呵呵~~~ ...
- java语言在某个数组中查找某个字符出现的次数
package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 在某 ...
- Java中过滤出字母、数字和中文的正则表达式
1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A-Za-z)] (2)过滤出数字的正则表达式 [^(0-9)] (3)过滤出中文的正则表达式 [^(\\u4e0 ...
随机推荐
- python学习:格式化输出
格式化输出 代码如下: name = input("Name:") age = input("Age:") job = input("Job:&quo ...
- dup(dup2/dup3)
readme man~ NAME dup, dup2, dup3 - duplicate a file descriptor SYNOPSIS #include <unistd.h> in ...
- 6. 深度克隆_ES7**_arr.includes('孙悟空')
1. 如何实现深度克隆 利用 JSON 方法 (没办法克隆函数数据) `JSON.parse(JSON.stringify(xxx))` 自定义方法 检查所有数据类型的方法 `Object.proto ...
- The POM for cn.e3mall:e3mall-common:jar:0.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for cn.e3mall:e3mall-common:jar:0.0.1-SNAPSHOT is missing, no dependency informati ...
- POJ 1324 Holedox Moving (状压BFS)
POJ 1324 Holedox Moving (状压BFS) Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 18091 Acc ...
- 微信小程序弹出操作菜单
微信小程序弹出操作菜单 比如在页面上放一个按钮,点击按钮弹出操作菜单,那么在按钮的 bindtap 事件里,执行下面的代码即可: wx.showActionSheet({ itemList: ['A' ...
- 模板设计在tomcat中的应用
tomcat是一个常见的web容器,用户使用它可以很方便地管理servlet小程序,而servlet与tomcat的交互代码设计就用到了模板设计. 何谓模板设计,就是定义一个抽象父类,在该父类中组织子 ...
- Multi-Projector Based Display Code ---- Download
The code providing are for your reference. Please download the code according to your hareware confi ...
- ZPW-2000电气绝缘移频轨道电路
1.该轨道电路是个什么样子?(图片) 整个轨道电路不仅都在室外,其中还包括室内设备.其中室内设备包括发送器.接收器和衰耗盒.室内设备和室外设备通过一根电缆相连. 机柜 2.移频轨道电路有什么作用? z ...
- Linux 部署 xxl-job 注意问题
问题:Failed to create parent directories for [/data/applogs/xxl-job/xxl-job-admin.log][原因:权限不足] 启动终端: ...