当前位置:   article > 正文

头歌 实验六 java输入输出_本关任务:从文件读取一篇英语文章,然后统计26个英文字母出现的次数。

本关任务:从文件读取一篇英语文章,然后统计26个英文字母出现的次数。

第1关:从文件读取一篇英语文章,然后统计26个英文字母出现的次数

任务描述

本关任务:从文件读取一篇英语文章,然后统计26个英文字母出现的次数。

要求
  1. 按26个字母的顺序统计出每个字母出现的次数。
  2. 用于统计次数的类FileLetter,只有一个方法: public int[] LetterStatistics(String strFilename); strFilename是输入的需统计的文件名; 返回的是一个整型数组,大小26,每个位置存放的分别是a到z出现的次数。大小写字母算同一个字母。
代码
  1. package step1;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. //在此写FileLetter类
  6. public class FileLetter {
  7. private FileInputStream read;
  8. public int[] LetterStatistics(String strFilename){
  9. try{
  10. read=new FileInputStream(strFilename);
  11. int[] letter=new int[26];
  12. int b=read.read();
  13. char a='a';char A='A';
  14. while(b!=-1) {
  15. if(b-(int)a>=0&&b-(int)a<26) {
  16. letter[b-(int)a]++;
  17. }
  18. else if(b-(int)A>=0&&b-(int)A<26) {
  19. letter[b-(int)A]++;
  20. }
  21. b=read.read();
  22. }
  23. read.close();
  24. return letter;
  25. }catch(IOException ioe) {
  26. ioe.printStackTrace();
  27. return null;
  28. }
  29. }
  30. }

第2关:文件的随机访问

任务描述

本关任务:创建一个学生类Student,包括姓名name,年龄age两个属性。姓名的长度不超过10个字符,年龄是int类型。使用随机读写类RandomAccessFile将学生信息写入到文件中,并能对文件中的学生信息进行读取和修改。(参照教科书P196,例6-18)。

要求

学生类的类名为:Student,该类中有两个属性,访问类型都为public:

char name[]=new char[10]; //学生姓名

int age;//年龄

public Student(String name,int age)构造函数

public void Print();显示姓名和年龄

``

还须创建一个读写类RWClass,该类有一个属性filename,打开读写的文件名。 public RWClass(String filename) 该类的构造函数 public void saveStudent(Student ss,int pos) 将学生对象的信息保存在文件中,ss为保存的学生信息,pos保存的位置。 public Student readStudent(int pos) 在文件中读出某位置的一个学生的信息,返回学生对象

代码

Student.java

  1. package step2;
  2. //在此写Student类
  3. public class Student {
  4. char name[]= {'\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000'};
  5. int age;
  6. public Student(String name,int age) throws Exception {
  7. if(name.toCharArray().length>10) {
  8. System.arraycopy(name.toCharArray(), 0, this.name, 0, 10);
  9. }else {
  10. System.arraycopy(name.toCharArray(), 0, this.name, 0, name.toCharArray().length);
  11. }
  12. this.age=age;
  13. }
  14. public void print() {
  15. System.out.println("name:"+name.toString());
  16. System.out.println("age:"+age);
  17. }
  18. }

RWClass.java

  1. package step2;
  2. import java.io.*;
  3. //在此写RWClass类
  4. public class RWClass {
  5. String filename;
  6. public RWClass(String Filename) {
  7. filename=Filename;
  8. }
  9. public void saveStudent(Student ss,int pos) throws Exception{
  10. RandomAccessFile ra=new RandomAccessFile(filename,"rw");
  11. ra.seek(pos*24);
  12. for(int i=0;i<10;i++) {
  13. ra.writeChar(ss.name[pos]);
  14. }
  15. ra.writeInt(ss.age);
  16. ra.close();
  17. }
  18. public Student readStudent(int pos) throws Exception{
  19. char buf[]=new char[10];
  20. RandomAccessFile ra=new RandomAccessFile(filename,"r");
  21. ra.seek(pos*24);
  22. for(int i=0;i<10;i++) {
  23. buf[i]=ra.readChar();
  24. }
  25. Student ss=new Student(buf.toString(),ra.readInt());
  26. ra.close();
  27. return ss;
  28. }
  29. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/380886
推荐阅读
相关标签
  

闽ICP备14008679号