头歌 JAVA 实验六——输入输出

前言:

多日没更,深感愧疚,今日闲来无事,习得实验六,在此与诸君分享,望诸君支持。

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

任务描述

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

要求:

  1. 按26个字母的顺序统计出每个字母出现的次数。

  2. 用于统计次数的类FileLetter,只有一个方法: public int[] LetterStatistics(String strFilename); strFilename是输入的需统计的文件名; 返回的是一个整型数组,大小26,每个位置存放的分别是a到z出现的次数。

    大小写字母算同一个字母。


开始你的任务吧,祝你成功!

解法:

无它,手熟尔!

源码:

package step1;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;

//在此写FileLetter类
public class FileLetter {
    
    private FileInputStream read;
    
    public int[] LetterStatistics(String strFilename){
        try{
            read=new FileInputStream(strFilename);
            int[] letter=new int[26];
            int b=read.read();
            char a='a';char A='A';
            while(b!=-1) {
                if(b-(int)a>=0&&b-(int)a<26) {
                    letter[b-(int)a]++;
                }
                else if(b-(int)A>=0&&b-(int)A<26) {
                    letter[b-(int)A]++;
                }
                b=read.read();
            }
            read.close();
            return letter;
        }catch(IOException ioe) {
            ioe.printStackTrace();
            return null;
        }    
    }
}

第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.class
package step2;
//在此写Student类
public class Student {
    char name[]= {'\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000'};
    int age;
    public Student(String name,int age) throws Exception {
        if(name.toCharArray().length>10) {
            System.arraycopy(name.toCharArray(), 0, this.name, 0, 10);
        }else {
            System.arraycopy(name.toCharArray(), 0, this.name, 0, name.toCharArray().length);
        }
        this.age=age;
    }
    public void print() {
        System.out.println("name:"+name.toString());
        System.out.println("age:"+age);
    }
}
RWClass.class
package step2;
import java.io.*;
//在此写RWClass类
public class RWClass {

    String filename;
    public RWClass(String Filename) {
        filename=Filename;
    }
    public void saveStudent(Student ss,int pos) throws Exception{
        RandomAccessFile ra=new RandomAccessFile(filename,"rw");
        ra.seek(pos*24);
        for(int i=0;i<10;i++) {
            ra.writeChar(ss.name[pos]);
        }
        ra.writeInt(ss.age);
        ra.close();
    }
    public Student readStudent(int pos) throws Exception{
        char buf[]=new char[10];
        RandomAccessFile ra=new RandomAccessFile(filename,"r");
        ra.seek(pos*24);
        for(int i=0;i<10;i++) {
            buf[i]=ra.readChar();
        }
        Student ss=new Student(buf.toString(),ra.readInt());
        ra.close();
        return ss;
    }
}
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 舒窈
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信