IO_课堂测试
IO_课堂测试
一,用户需求
英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?《飘》 中最常用的短语是什么,等等。
(1)要求1:
输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。
(注:1,字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数)
2,如果两个字母出现的频率一样,那么就按照字典序排列。)
思路分析:
1),创建一个char 数组ch1,存入(a-Z 52个字母)创建一个同大小的int 数组num。
2),循环:按行读取文件,遍历这行逐个字符与ch1中那个字母相等,使用ch1的下标,在num处加一,并在此记录字母总数sum。
3),按num的数据对num,ch1同步排序。
4),输出排序后的结果。
源代码:
package zimu; import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner; public class hao {
static String str="";
static String str1="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static char ch1 []=str1.toCharArray();
public static double num[]=new double[100];
public static int sum=0;
public static void read() {
Scanner scan =new Scanner(System.in);
File file = new File("Harry Potter and the Sorcerer's Stone.txt");
int score = 0;
StringBuffer result = new StringBuffer();
try {
FileReader r = new FileReader(file);
BufferedReader br = new BufferedReader(r);
int i=0;
str=br.readLine();
while(str!=null){
for(int j=0;j<str.length();j++) {
for(int k=0;k<str1.length();k++) {
if(str.charAt(j)==str1.charAt(k)) {
sum++;
num[k]++;
}
}
}
str=br.readLine();
}
br.close();
for(int p=0;p<str1.length()-1;p++) {
int o=p;
for(int q=p;q<str1.length();q++) {
if(num[o]<num[q]) {
o=q;
}
}
if(o!=p) {
char ff=ch1[o];
ch1[o]=ch1[p];
ch1[p]=ff;
double fff=num[o];
num[o]=num[p];
num[p]=fff; }
}
for(int k=0;k<str1.length();k++) {
num[k]=num[k]/sum*100;
System.out.print(ch1[k]);
System.out.printf("%.2f",num[k]);
System.out.println("%");
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
public static void main(String[] args) {
read();
} }
运行测试:
要求2:
输出单个文件中的前 N 个最常出现的英语单词。
(注:以英文字母开头,由英文字母和字母数字符号组成的字符串视为一个单词。单词以分隔符分割且不区分大小写。在输出时,所有单词都用小写字符表示。)
思路分析:
1)循环:按行读取文件,并将本行用toLowerCase()把大写改成小写,并按空格分割存进数组中。
2)对所有单词进行去重。并存到另一个数组中。
3)对所有单词进行遍历,求出每个不重复单词的个数存入int数组。
4)对int数组和单词数组同步排序。
5)输出前N个单词及其个数。
源代码:
package zimu; import java.io.File;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class danci {
private static String str="";
private static Scanner sc=new Scanner(System.in);
private static BufferedReader cin=null;
private static String a[]=new String[1000000];
private static String c[]=new String[10000000];
private static int b[]=new int[1000000];
private static int length=0;
private static int length1=0;
private static int nn=0;
private static int j=0;
static File[] list = new File("D:\\java编译器").listFiles();
//private static Boolean false;
public static void cun() throws IOException {//将单词存到数组a
{ while(str!=null) {
int i=0;
str=str.toLowerCase(); //把大写改成小写
for(i=0;i<str.length();i++) {
if((str.charAt(i)>96&&str.charAt(i)<123)) {
a[j]=a[j]+str.charAt(i);
}
if(str.charAt(i)==' '||str.charAt(i)==','||str.charAt(i)=='.') {
if(!a[j].equals("")) {
j=j+1;
a[j]="";
}
} }
str=cin.readLine();
}
length=j;
}
}
public static void show() {//显示
for(int k=0;k<nn;k++) {
System.out.print(c[k]+"\t"+b[k]+" ");
System.out.printf("%.2f",(double)b[k]/length1*100);
System.out.print("%");
System.out.println("");
}
}
public static void Sorting() {//排序
int t3=0;
int t2=0;
String sr="";
for(int i=0;i<length1-1;i++) {
t3=i;
for(int j=i+1;j<length1;j++) {
if(b[t3]<b[j]) {
t3=j;
}
}
if(t3!=i) {
t2=b[i];
b[i]=b[t3];
b[t3]=t2;
sr=c[i];
c[i]=c[t3];
c[t3]=sr;
}
}
}
public static void Statistics(){//去重
for(int k=0;k<length;k++) {
b[k]=0;
}
c[0]=a[0];
int tt=1;
Boolean rt=true; for(int i=1;i<length;i++) {
rt=false;
for(int j=0;j<tt;j++) {
if(a[i].equals(c[j])) {
rt=true;
break;
}
}
if(!rt) {
c[tt]=a[i];
tt++;
}
} length1=tt;
for(int i=0;i<length1;i++) {
for(int j=0;j<length;j++) {
if(c[i].equals(a[j])) {
b[i]++;
}
}
}
}
public static void Readfile() {
File file=new File("Harry Potter and the Sorcerer's Stone.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
cin=new BufferedReader(read);
str=cin.readLine();
cun();
cin.close();
read.close();
}
catch(IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
} public static void main(String[] args) throws IOException {
System.out.println("请输入需要统计的个数:");
nn=sc.nextInt();
a[0]="";
Readfile();
Statistics();
Sorting();
show();
} }
运行测试:
要求3(功能1):
输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字典序排列。
思路分析:
1)循环:按行读取文件,并将本行用toLowerCase()把大写改成小写,并按空格分割存进数组中。
2)对所有单词进行去重。并存到另一个数组中。
3)对所有单词进行遍历,求出每个不重复单词的个数存入int数组。
4)对int数组和单词数组同步排序。
5)输出所有个单词及其个数。
源代码:
package zimu; import java.io.File;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class danci {
private static String str="";
private static Scanner sc=new Scanner(System.in);
private static BufferedReader cin=null;
private static String a[]=new String[1000000];
private static String c[]=new String[10000000];
private static int b[]=new int[1000000];
private static int length=0;
private static int length1=0;
private static int nn=0;
private static int j=0;
static File[] list = new File("D:\\java编译器").listFiles();
//private static Boolean false;
public static void cun() throws IOException {//将单词存到数组a
{ while(str!=null) {
int i=0;
str=str.toLowerCase(); //把大写改成小写
for(i=0;i<str.length();i++) {
if((str.charAt(i)>96&&str.charAt(i)<123)) {
a[j]=a[j]+str.charAt(i);
}
if(str.charAt(i)==' '||str.charAt(i)==','||str.charAt(i)=='.') {
if(!a[j].equals("")) {
j=j+1;
a[j]="";
}
} }
str=cin.readLine();
}
length=j;
}
}
public static void Sorting() {//排序
int t3=0;
int t2=0;
String sr="";
for(int i=0;i<length1-1;i++) {
t3=i;
for(int j=i+1;j<length1;j++) {
if(b[t3]<b[j]) {
t3=j;
}
}
if(t3!=i) {
t2=b[i];
b[i]=b[t3];
b[t3]=t2;
sr=c[i];
c[i]=c[t3];
c[t3]=sr;
}
}
}
public static void Statistics(){//去重
for(int k=0;k<length;k++) {
b[k]=0;
}
c[0]=a[0];
int tt=1;
Boolean rt=true; for(int i=1;i<length;i++) {
rt=false;
for(int j=0;j<tt;j++) {
if(a[i].equals(c[j])) {
rt=true;
break;
}
}
if(!rt) {
c[tt]=a[i];
tt++;
}
} length1=tt;
for(int i=0;i<length1;i++) {
for(int j=0;j<length;j++) {
if(c[i].equals(a[j])) {
b[i]++;
}
}
}
}
public static void Readfile() {
File file=new File("Harry Potter and the Sorcerer's Stone.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
cin=new BufferedReader(read);
str=cin.readLine();
cun();
cin.close();
read.close();
}
catch(IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
} public static void Writefile() throws IOException {
File file=new File("t1.txt");
if(!file.exists())
file.createNewFile();
FileWriter write = new FileWriter(file,true);
BufferedWriter out=new BufferedWriter(write);
for(int i=0;i<length1;i++){
StringBuffer sb=new StringBuffer();
out.write("这是第"+(i+1)+"个: "); double f4=(double)b[i]/length1*100;
out.write(c[i]+"\t"+b[i]+"\t"+f4);
out.write("\r\n"); }
out.close();
}
public static void show1() {
for(int k=0;k<length1;k++) {
System.out.print(c[k]+"\t \t\t"+b[k]+"\n"); }
}public static void main(String[] args) throws IOException {
// System.out.println("请输入需要统计的个数:");
// nn=sc.nextInt();
a[0]="";
Readfile();
Statistics();
Sorting();
// show(); System.out.println("程序中所以不重复的单词!");
show1();
Writefile(); } }
运行测试
(注:!!!控制台缓存不足故存到文件中)
文件:
要求4(功能二):
指定文件目录,对目录下每一个文件执行 功能1的操作。
思路分析:
1)找出所给目录中的所有文件存入数组。
2)对所有文件名进行去重。并存到另一个数组中。
3)对所有文件名进行遍历,求出每个不重复单词的个数存入int数组。
4)对int数组和文件名数组同步排序。
5)输出所有文件名及其个数。
源代码:
package zimu; import java.io.File;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class danci {
private static String str="";
private static Scanner sc=new Scanner(System.in);
private static BufferedReader cin=null;
private static String a[]=new String[1000000];
private static String c[]=new String[10000000];
private static int b[]=new int[1000000];
private static int length=0;
private static int length1=0;
private static int nn=0;
private static int j=0;
static File[] list = new File("D:\\java编译器").listFiles();
public static void Sorting() {//排序
int t3=0;
int t2=0;
String sr="";
for(int i=0;i<length1-1;i++) {
t3=i;
for(int j=i+1;j<length1;j++) {
if(b[t3]<b[j]) {
t3=j;
}
}
if(t3!=i) {
t2=b[i];
b[i]=b[t3];
b[t3]=t2;
sr=c[i];
c[i]=c[t3];
c[t3]=sr;
}
}
}
public static void Statistics(){//去重
for(int k=0;k<length;k++) {
b[k]=0;
}
c[0]=a[0];
int tt=1;
Boolean rt=true; for(int i=1;i<length;i++) {
rt=false;
for(int j=0;j<tt;j++) {
if(a[i].equals(c[j])) {
rt=true;
break;
}
}
if(!rt) {
c[tt]=a[i];
tt++;
}
} length1=tt;
for(int i=0;i<length1;i++) {
for(int j=0;j<length;j++) {
if(c[i].equals(a[j])) {
b[i]++;
}
}
}
}
public static void Readfile() {
File file=new File("Harry Potter and the Sorcerer's Stone.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
cin=new BufferedReader(read);
str=cin.readLine();
cun();
cin.close();
read.close();
}
catch(IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
}
public static void show1() {
for(int k=0;k<length1;k++) {
System.out.print(c[k]+"\t \t\t"+b[k]+" ");
System.out.printf("%.2f",(double)b[k]/length1*100);
System.out.print("%");
System.out.println("");
}
} public static void rode1(File[] list) {
for(File file : list)
{
if(file.isFile())
{
a[length++]=file.getAbsolutePath(); }
}
} public static void main(String[] args) throws IOException {
rode1(list);
Statistics();
Sorting();
show1();
} }
运行测试:
要求5(功能三):
指定文件目录, 但是会递归遍历目录下的所有子目录,每个文件执行功能1的做操。
思路分析:
1)找出所给目录中的所有文件存入数组如果是数组再递归调用存入函数。
2)对所有文件名进行去重。并存到另一个数组中。
3)对所有文件名进行遍历,求出每个不重复单词的个数存入int数组。
4)对int数组和文件名数组同步排序。
5)输出所有文件名及其个数。
源代码:
package zimu; import java.io.File;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class danci {
private static String str="";
private static Scanner sc=new Scanner(System.in);
private static BufferedReader cin=null;
private static String a[]=new String[1000000];
private static String c[]=new String[10000000];
private static int b[]=new int[1000000];
private static int length=0;
private static int length1=0;
private static int nn=0;
private static int j=0;
static File[] list = new File("D:\\java编译器").listFiles();public static void Sorting() {//排序
int t3=0;
int t2=0;
String sr="";
for(int i=0;i<length1-1;i++) {
t3=i;
for(int j=i+1;j<length1;j++) {
if(b[t3]<b[j]) {
t3=j;
}
}
if(t3!=i) {
t2=b[i];
b[i]=b[t3];
b[t3]=t2;
sr=c[i];
c[i]=c[t3];
c[t3]=sr;
}
}
}
public static void Statistics(){//去重
for(int k=0;k<length;k++) {
b[k]=0;
}
c[0]=a[0];
int tt=1;
Boolean rt=true; for(int i=1;i<length;i++) {
rt=false;
for(int j=0;j<tt;j++) {
if(a[i].equals(c[j])) {
rt=true;
break;
}
}
if(!rt) {
c[tt]=a[i];
tt++;
}
} length1=tt;
for(int i=0;i<length1;i++) {
for(int j=0;j<length;j++) {
if(c[i].equals(a[j])) {
b[i]++;
}
}
}
}
public static void Readfile() {
File file=new File("Harry Potter and the Sorcerer's Stone.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
cin=new BufferedReader(read);
str=cin.readLine();
cun();
cin.close();
read.close();
}
catch(IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
}
public static void show1() {
for(int k=0;k<length1;k++) {
System.out.print(c[k]+"\t \t\t"+b[k]+" ");
System.out.printf("%.2f",(double)b[k]/length1*100);
System.out.print("%");
System.out.println("");
}
} public static void rode1(File[] list) { for(File file : list)
{
if(file.isFile())
{
a[length++]=file.getAbsolutePath(); }else if(file.isDirectory()) {
String str3=file.getAbsolutePath();
list = new File(str3).listFiles();
rode1(list);
}
}
} public static void main(String[] args) throws IOException { rode1(list);
Statistics();
Sorting();
show1();
} }
运行测试:
.........
IO_课堂测试的更多相关文章
- 耿丹CS16-2班课堂测试作业汇总
Deadline: 2016-11-01 11:59 作业内容 课堂测试作业总结 00.题目得5分,多半扣在格式上,有些同学代码写得很过分,已经很仁慈对待,同学们珍惜之: 01.界面设计得分不好,换行 ...
- 课堂测试ch06
课堂测试ch06 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A. 1 B. 1/4 C. 1/2 D. 3/4 解析:在填充了之后,对于x和y数组,只有在引用 ...
- 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现
20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...
- 课堂测试——jsp登录界面设计
实现结果:在login.jsp页面提交用户名和密码(可以验证是否为空),点击登录跳转到loginResult.jsp页面进行验证并显示结果 JSP + JDBC + MySQL login.jsp 设 ...
- 20172306 2018-2019《Java程序设计与数据结构课堂测试补充报告》
学号 2017-2018-2 <程序设计与数据结构>课堂测试补充报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 刘辰 学号:20172306 实验教师:王志强 必 ...
- 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结
20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...
- 20155228 2017-5-31 课堂测试:编写MyOD.java
20155228 2017-5-31 课堂测试:编写MyOD.java 题目和要求 编写MyOD.java:用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码 ...
- 20155228 2017-5-10 课堂测试:MySort
20155228 2017-5-10 课堂测试:MySort 题目和要求 模拟实现Linux下Sort-t:-k2的功能.参考Sort的实现.提交码云链接和代码运行截图. import java.ut ...
- 20155228 2017-5-10 课堂测试:Arrays和String单元测试
20155228 2017-5-10 课堂测试:Arrays和String单元测试 题目和要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...
随机推荐
- 十八、oracle查看、扩展表空间及linux服务器硬盘容量大小查看
/*备注:表空间是数据库的逻辑组成部分从物理上将:数据库数据存放在数据文件中从逻辑上将:数据库则是存放在表空间中表空间由一个或是多个数据文件组成*/ --1.查看用户下面的所有的表SELECT * F ...
- Unnatural
1. 纪录片:非自然选择 1.1 CRISPR-Cas9的出现 1.2 故事1:先天性基因缺陷而失明的小孩 1.3 故事2:基因变异的蚊子 1.4 基因技术应用的现状 1.5 担忧 2. CRISPR ...
- Day3-L-Cup HDU2289
The WHU ACM Team has a big cup, with which every member drinks water. Now, we know the volume of the ...
- java字符集编码乱码问题
博客分类: web javajspservlet 最近做网页这块时碰到了正文字符乱码问题.别看这小小的一个问题,对我来说却花费了好长一段时间.现在让我慢慢分析它吧(说实话.这些有部分是从网上找的,但 ...
- 认识python中的super函数
需求分析 在类继承中,存在这么一种情况: class Human(object): def Move(self): print("我会走路...") class Man(Human ...
- 一、 SVN概述&工作方式&恢复历史版本
What why how 1 什么是SVN?作用是什么? SVN(SubVersion),版本控制系统.采用了分支管理系统,用于多人共同开发一个项目,共用资源的目的. 2 为什么要有SVN? 解决代码 ...
- 编写第一个JavaScript程序
编写第一个程序 在 HTML 页面中嵌入 JavaScript 脚本需要使用 <script> 标签,用户可以在 <script> 标签中直接编写 JavaScript 代码, ...
- <BitMap>大名鼎鼎的bitmap算法
BitMap 抛砖引玉 首先,我们思考一个问题:如何在3亿个整数(0~2亿)中判断某一个数是否存在?现在只有一台机器,内存只有500M 这个问题像不像我们之前提到过的一个在0-10个数中,判断某一个数 ...
- iOS Framework制作流程
1.新建工程选择iOS —> Cocoa Touch Framework 2.进入创建好的工程删除掉自带的工程同名头文件 3.添加所需文件 4.TARGETS —> Build Setti ...
- Codeforces 459E Roland and Rose
本以为是个树形DP,按照树形DP的方法在那里dfs,结果WA到死,因为它存在有向环,不是树,凡是存在环的情况切记不要用树形的方法去做 题目的突破点在于将边排完序之后,用点表示以该点为边结尾的最大长度, ...