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_课堂测试的更多相关文章

  1. 耿丹CS16-2班课堂测试作业汇总

    Deadline: 2016-11-01 11:59 作业内容 课堂测试作业总结 00.题目得5分,多半扣在格式上,有些同学代码写得很过分,已经很仁慈对待,同学们珍惜之: 01.界面设计得分不好,换行 ...

  2. 课堂测试ch06

    课堂测试ch06 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A. 1 B. 1/4 C. 1/2 D. 3/4 解析:在填充了之后,对于x和y数组,只有在引用 ...

  3. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现

    20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...

  4. 课堂测试——jsp登录界面设计

    实现结果:在login.jsp页面提交用户名和密码(可以验证是否为空),点击登录跳转到loginResult.jsp页面进行验证并显示结果 JSP + JDBC + MySQL login.jsp 设 ...

  5. 20172306 2018-2019《Java程序设计与数据结构课堂测试补充报告》

    学号 2017-2018-2 <程序设计与数据结构>课堂测试补充报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 刘辰 学号:20172306 实验教师:王志强 必 ...

  6. 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结

    20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...

  7. 20155228 2017-5-31 课堂测试:编写MyOD.java

    20155228 2017-5-31 课堂测试:编写MyOD.java 题目和要求 编写MyOD.java:用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码 ...

  8. 20155228 2017-5-10 课堂测试:MySort

    20155228 2017-5-10 课堂测试:MySort 题目和要求 模拟实现Linux下Sort-t:-k2的功能.参考Sort的实现.提交码云链接和代码运行截图. import java.ut ...

  9. 20155228 2017-5-10 课堂测试:Arrays和String单元测试

    20155228 2017-5-10 课堂测试:Arrays和String单元测试 题目和要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...

随机推荐

  1. Keras入门——(6)长短期记忆网络LSTM(三)

    参考: https://blog.csdn.net/u012735708/article/details/82769711 https://zybuluo.com/hanbingtao/note/58 ...

  2. 083、Java数组之方法返回数组

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  3. 【Luogu4448】 [AHOI2018初中组]球球的排列

    题意 有 \(n\) 个球球,每个球球有一个属性值 .一个合法的排列满足不存在相邻两个球球的属性值乘积是完全平方数.求合法的排列数量对 \(10^9+7\) 取膜. \(n\le 300\) (本题数 ...

  4. 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead

    import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ...

  5. 15 SQL中的安全问题

    SQL中的安全问题     1.SQL注入         demo1:             SELECT * FROM user WHERE username = ? AND password ...

  6. 设备树DTS 学习:2-设备树语法

    背景 通过上一讲了解完设备树DTS有关概念,我们这一讲就来基于设备树例程,学习设备树的语法规则. 参考:设备树详解dts.设备树语法详解.设备树使用总结 设备树框架 1个dts文件 + n个dtsi文 ...

  7. 使用FFmpeg处理视频文件:视频转码、剪切、合并、播放速调整

    安装 略. 转码 最简单命令如下: ffmpeg -i out.ogv -vcodec h264 out.mp4ffmpeg -i out.ogv -vcodec mpeg4 out.mp4ffmpe ...

  8. 宏碁发布两款全A平台笔记本:良心价

    导读 8月3日消息,在全球数码互动娱乐盛会ChinaJoy上,宏碁推出全新两款全A平台笔记本——暗影骑士4 锐龙版酷冷游戏本和蜂鸟Swift3锐龙版金属轻薄本. 此次发布的宏碁暗影骑士4 锐龙版笔记本 ...

  9. 软件构造 Lab1

    大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSqu ...

  10. spring-boot-autoconfigure-xx.jar核心注解