要求1:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。
            字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数)
            如果两个字母出现的频率一样,那么就按照字典序排列。

实验思路:利用每个字母的阿斯克码值不同来记录每个字母。定义一个二维数组,字母区分大小写一个52个,定义一个二维数组a[52][2]。用来存字母的阿斯克码值,另一个用来存其对应字母的个数。

最后进行倒叙排序,求出其百分比,并保留两位小数。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Array;
import java.nio.channels.NonWritableChannelException;
import java.text.DecimalFormat;
import java.util.Scanner; public class Hlbt {
static double a[][]=new double [52][2]; static int number;
public static void main(String[] args) { File file= new File("Harry Potter and the Sorcerer's Stone.txt");
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(file);
br=new BufferedReader(fr);
String str=null;
while((str=br.readLine())!=null)
{
//System.out.println(str);
char [] c=str.toCharArray();
//String b[]=new String[10000];
for(int i=0;i<str.length();i++)
{
int x=Integer.valueOf(c[i]);
if(x>=65&&x<=90)
{
a[x-65][1]++;
number++;
}
else if(x>=97&&x<=122)
{
a[x-97+26][1]++;
number++;
}
} }
for(int j=0;j<52;j++)
{
if(j<26) a[j][0]=j+65;
else a[j][0]=j+97-26;
}
for (int i = 0; i<51; i++)
for (int j = 0; j < 51- i; j++)
{ if (a[j][1] < a[j + 1][1]) {
double temp = a[j][1];
a[j][1]= a[j + 1][1];
a[j + 1][1] = temp;
double m = a[j][0];
a[j][0]= a[j + 1][0];
a[j + 1][0] = m;
}
}
for (int j=0;j<52;j++)
{
double b=a[j][1]/number*100;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println((char)(int)a[j][0]+":"+df.format(b)+"%");
} } catch (Exception e) {
// TODO: handle exception }
}
}

  

输出《Harry Potter and the Sorcerer's Stone》英文i的字母数量并排序的更多相关文章

  1. 输出《Harry Potter and the Sorcerer's Stone》文本中的前N个最长用的英文单词及其数量

    输出<Harry Potter and the Sorcerer's Stone>文本中的前N个最长用的英文单词及其数量 实验思路: 1. 利用输入流将文件当中内容读入. 2. 将文件内容 ...

  2. Java的实验程序之输出单个文件中的前 N 个最常出现的英语单词

    日期:2018.10.11 星期四 博客期:016 题目:输出单个文件中的前 N 个最常出现的英语单词,并输出到文本文件中 在程序运行之前,我试着先写了字符的字母的总结,加载代码如下: //如下是第一 ...

  3. 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。-----力扣

    给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: 输入: [1 ...

  4. CocoaLumberjack+XcodeColor(输出带有颜色的日志)在安装过程中遇到的问题

    在安装的时候遇到了各种坑,(在这里用到的pch文件的使用以及解决无法引入的问题,可以参考上午的文章) 一(XcodeColor的安装).在github上下载XcodeClolor的插件,并且安装,Xc ...

  5. 输出单个文件中的前 N 个最常出现的英语单词,并将结果输入到文本文件中。程序设计思路。

    将文件内容读取后存入StringBuffer中. 利用函数将段落分割成字符串,按(“,”,“.”,“!”,“空格”,“回车”)分割,然后存入数组中. 遍历数组,并统计每个单词及其出现的次数. 要求出文 ...

  6. 如何使用 awk 输出文本中的字段和列

    首先我们要知道,awk 能够自动将输入的行,分隔为若干字段.每一个字段就是一组字符,它们和其他的字段由一个内部字段分隔符分隔开来. 如果你熟悉 Unix/Linux 或者懂得 bash shell 编 ...

  7. cut 从文本中提取一段文字并输出

    1.命令功能 cut 从每个文件中截取选定部分并输出. 2.语法格式 cut  option  file 参数说明 参数 参数说明 -b (–bytes) 字节 -c (--characters) 字 ...

  8. 【C语言】将文本中汉字读入字符数组输出乱码

    输出中文字符乱码 今天从文件中将中文读入字符数组后输出发现其中文变成了乱码,,令人头大. 解决办法 将文本编码格式改成ANSI即可. 打开记事本->文件->另存为->更改编码格式-& ...

  9. 如何改变输出方式(让printf输出结果保存到TXT文本中)

    查阅相关资料,汇总如下: #include <stdio.h> #include <stdlib.h> int main() { char money= 's'; char a ...

随机推荐

  1. Shiro权限验证说明

    1.简介 shiro是一个安全框架,是Apache的一个子项目.shiro提供了:认证.授权.加密.会话管理.与web集成.缓存等模块. 1.1.模块介绍 Authentication:用户身份识别, ...

  2. HessianSharp如何部署到IIS7上?

    第一:添加映射 第二:选择经典

  3. RFC笔记—IP Version 6 Addressing Architecture

    IP Version 6 Addressing Architecture,RFC4291 It includes the basic formats for the various types of ...

  4. vs code支持 es6, node.js 语法提示

    npm install --save-dev @types/node 安装这个东西就可以了, 代码拷走, 回去愉快的敲代码吧

  5. git revert和rebase

    当前多个commit,想把这几个commit合并成一个,但是想把其中某个commit add2的去掉, 用git revert add2的commit_id,这里只是撤销那次代码提交,后面的add3的 ...

  6. Arm开发板+Qt学习之路-multiple definition of

    问题描述:在一个头文件a.h中定义一些变量x,在其他.c文件中(b.c,c.c)要用到.用一般的全局变量的方法,编译时总是提示error:multiple definition of x 问题分析:o ...

  7. package包

    为什么需要package? 为了解决类之间的重名问题.为了方便管理类,合适的类放在合适的包. 怎么用package? 通常是类的第一句非注释性语句. 包名,域名倒着写,加上模块名,并与内部管理类. 命 ...

  8. Deepin下将Caps映射为Control_L键

    xmodmap -e 'clear Lock' -e 'keycode 0x42 = Control_L'

  9. Asp.net Core MVC(三)UseMvc设置路由

    在家办公,下班继续看点东西,不废话,继续看MVC的路由. asp.net核心mvc的路由是建立在asp.net核心的路由之上的.通过终结点加载路由中间件的配置方式在此不细说了,(DOTNET Core ...

  10. 二进制、十六进制理解及int类型二进制存储方式

    二进制 0000 0000 0000 0000 0000 0000 0000 0001 // 2^0 0000 0000 0000 0000 0000 0000 0000 0010 // 2^1 00 ...