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 ...
随机推荐
- react-native-splash-screen 插件 android 系统app崩溃问题
问题 react-native版本 0.53.3 react-native-splash-screen版本 3.0.6 一切配置妥当后出现如下问题: 在android studio里的调试报错为and ...
- [LeetCode] Design HashSet 设计HashSet
Design a HashSet without using any built-in hash table libraries. To be specific, your design should ...
- MYSQL 导入导出数据库文件
一.从数据库导出数据库或表文件: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据mysqldump -h localhost -uroot ...
- nodejs----安装配置
Node.js 安装配置 Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/. 你可以根据不同平台系统选择你需要的 Node.js 安装包. Nod ...
- C++中的常量函数
(1)常量成员函数不修改对象. (2)常量成员函数在定义和声明中都需要加上 const; (3)非常量成员函数不能被常量成员函数调用,但构造函数和析构函数除外. (4)常量(cosnt对象)对象不能调 ...
- bootstrap网格设置等高度
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...
- Ubuntu16.04 创建和使用虚拟环境
1. 虚拟环境 虚拟环境(virtual environment),顾名思义是虚拟出来的环境,通俗来讲,可以借助虚拟机,docker来理解虚拟环境,就是把一部分内容独立出来,我们把这部分独立出来的 ...
- 使用C#.NET列举组合数前N项和
列举如下列所示的组合数前N项和,代码如下(递归方法里注意去重): static void Main(string[] args) { List<).ToList(); File.AppendAl ...
- c++ 第一次实验
实验内容: 2-28:实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selete one:”提示用户输入.A表示增加,D表示删除, S表示排序 ...
- 已知两点经纬度(百度地图),用js求解两点之间的角度
采用的网址:https://my.oschina.net/boogoogle/blog/740478