【免费下载】实验8输入输出流
- 格式:pdf
- 大小:187.42 KB
- 文档页数:8
广西科技大学计通学院《Java面向对象程序设计》实验实验八输入输出流学生姓名:×××学号:×××班级:×××指导老师:×××专业:计算机科学与技术提交日期:×××年×× 月××日实验报告内容1. 实验目的掌握字符输入、输出流用法;掌握使用SCanner类解析文件;掌握COnsole流的使用。
2. 实验内容实验教材-第12章实验1、2、3字符输入输出流;SCanner类和Console类要求:完善程序,给出实验结果截图;完成试验后练习。
3. 程序代码及运行结果:实验1举重成绩单// AnalysisResult.javaimport java.io.*;import java.util.*;PUbIiC class An alysisResult {PUbIiC StatiC void main( Stri ng[] args) {File fRead=new File("score.txt");File fWrite=new File("scoreA nalysis.txt"); try{Writer out=new FiIeWriter(fWrite);BUfferedWriter bufferWrite=newBUfferedWriter(out);Reader in=new FiIeReader(fRead);BUfferedReader bufferRead=newBUfferedReader(i n);String str=n ull;WhiIe((Str=bufferRead.readLi ne())!=null){ doubletotalScore=Fe nxi.getTotalScore(str);Str=St 叶" 总成绩:"+totalScore;SyStem.out.pri ntln( str);bufferWrite.write(str); bufferWrite. newL in e();}bufferRead.close();bufferWrite.close();}CatCh(IOEXCePti on e){SyStem.out.pri ntl n(e.toStri ng());}}}// Fenxi.javaimport java.util.*;PUbIiC class FenXi {PUbIiC StatiC double getTotalScore(Stri ng S) { String regex = "[^0123456789.]";Stri ng digitMess = s.replaceAII(regex,"*");Stri ngToke nizer fenxi = newStri ngToke ni zer(digitMess,"*");double totalScore=0;while(fe nxi.hasMoreToke ns()){doubleSCOre=Double.parseDouble(fe nxi. nextToke n());totalScore=totalScore+score;}return totalScore;// score.txt姓名: 张二, 抓举成绩 106kg, 挺举189kg 姓名: 李四, 抓举成绩 108kg , 挺举186kg 姓名: 周五, 抓举成绩 112kg , 挺举190kg运行结果如图1所示 CatCh(IOEXCePti On exp){SyStem.out.pri ntln (exp.toStri ng());} }void SetFiIeName(Stri ng n ame){姓名:张三,抓举成绩106kg , 姓名:李四,抓举成绩108kg , 姓名:周五,抓举成绩112kg,挺举189kg o 总成绩:295.0 梃举186kg o 总成绩:294.0 挺举190kg o 总成绩:302.0实验2统计英文单词 // WOrdStatiStiC.java import java.io.*; import java.util.*;PUbIiC class WOrdStatiStiC { VeCtOr<Stri ng> allWord, noSameWord;FiIe file=new File("e nglish.txt"); SCanner sc=n ull; String regex; WOrdStatiStiC (){allWord=new VeCtOr<Stri ng>(); no SameWOrd=new VeCtOr<Stri ng>(); regex="[∖∖s ∖∖d ∖∖p{Pu net}]+";// try{sc=new Scann er(file);正则表达式file=new File (n ame);try{sc=new Scann er(file); eDelimiter(regex);}CatCh(IOEXCePti on exp){SyStem.out.pri ntln (exp.toStri ng());}}void WOrdStatiStiC() {try{WhiIe(SC.hasNext()){ String WOrd=SC .n ext();allWord.add(word);if(!no SameWord.c Ontain S(WOrd)) noSameWord.add(word);}}CatCh(EXCePti on e){}}PUbIiC VeCtOr<Stri ng>getAllWord(){ return allWord;}PUbIiC VeCtOr<Stri ng>getNoSameWord(){ return no SameWord;}// OUtPUtWOrdMeSS.javaimport java.util.*;PUbliC class OUtPUtWOrdMeSS {PUbIiC StatiC void main( Stri ng[] args) {VeCtOr<Stri ng> allWord, noSameWord;WOrdStatiStiC StatiStiC=newWOrdStatiStiC();StatiStiC.setFileName("hello.txt");StatiStiC.WordStatistic();allWord=statistic.getAllWord();no SameWOrd=StatiStiC.getNoSameWord();SyStem.out.pri ntl n(" 共有"+allWord.size()+" 个英文单词");SyStem.out.pri ntl n(" 有"+noSameWord.size()+"个互不相同英文单词");SyStem.out.pri ntln (" 按出现的频率排列:");int coun t[]=new in t[ no SameWord.size()];for(i nt i=0;i< no SameWord.size();i++){Stri ng s1= no SameWord.eleme ntAt(i);for(i nt j=O;j<allWord.size();j++){Stri ng s2=allWord.eleme ntAt(j);if(s1.equals(s2))coun t[i]++;}}for(i nt m=0;m <no SameWord.size();m++){for(i ntn=m+1; n<no SameWord.size( );n++){if(co Un t[ n]>co Un t[m]){ Stri ngtemp=no SameWordeIeme ntAt(m);no SameWord.setEleme ntAt( no SameWord.eleme ntAt( n), m) ;no SameWord.setEleme ntAt(temp,n) ;int t=co Un t[m];coun t[m]=co unt[n];coun t[ n]=t;}}}for(i nt m=0;m <no SameWord.size();m++){doublefreque ncy=(1.0*co Un t[m])∕allWord.size();SyStem.out.pri ntf("%s%-7.3f",no SameWord.eleme ntAt(m),freque ncy);}}}运行结果如图2所示共有6个英文单词有6个互不相同英文单词按岀现的解排列:what:0.167 areιθΛ67 you:0.167 doing:0,167 is:0*167 Java:0,167图2实验3密码流// PaSSWOrdJaVaimport java.io.*;PUbliC class PaSSWOrd {PUbliC StatiC void main( Stri ng[] args) { boolea n SUCCeSS=false; int coun t=0; Con sole cons; char[] PaSSWd;con S=SyStem.c on sole(); while(true){SyStem.out.pri nt(" 输入密码:"); PaSSWd=C on s.readPassword(); coun t++;String PaSSWOrd= new Strin g(passwd); if(password.equals("tiger123")){SUCCeSS=true; SyStem.out.pri ntl n("密码正确!");break; }else{SyStem.out.pri ntl n("密码"+password+"不正确!");}if(cou nt==3){SyStem.out.pri ntl n("码都不正确!");SyStem.exit(0); } }if(success){File file=new File("score1.txt try{您第"+count+"次输入的您第"+count+"次输入的您"+count+"次输入的密FileReader inθne=new FileReader(file); BUfferedReader in Tow=newBUfferedReader(i nθn e);Stri ng s=n ull;WhiIe((s=i nTow.readLi ne())!=null){SyStem.out.pri ntl n( s); }inθn e.close(); in Tow.close(); }catch(IOExceptio n ioe){} } } }// score.txt姓名: 张三, 抓举成绩 106kg, 挺举189kg姓名: 李四, 抓举成绩 108kg , 挺举186kg 姓周五, 抓举成绩 112kg , 挺举190kg运行结果如图3所示 4. 实验后的练习:实验1有如下格式的成绩单(文本格式) score.txt 。
实验⼋流类库与输⼊输出实验报告课程:⾯向对象技术学号:1010431079 姓名:郝祥海班级:2010级计算机软件(嵌⼊式系统)1班教师:周晓计算机科学与技术系实验⼋流类库与输⼊输出⼀、实验⽬的及要求1.熟悉流类库中常⽤的类及其成员函数的⽤法;2.掌握标准输⼊/输出及格式控制;3.掌握对⽂件的应⽤⽅法。
⼆、实验环境硬件:计算机软件:Microsoft Visual C++三、实验内容1.声明⼀个学⽣类数组,输⼊数据,显⽰出来,使⽤I/O流把此数组的内容写⼊磁盘⽂件,再显⽰出⽂件内容。
学⽣类具有的属性如下:姓名name、学号number、班号classno、性别sex、出⽣⽇期birthday,其中“出⽣⽇期”声明为⼀个“⽇期”类内嵌⼦对象。
四、实验结果(附截图)五、总结通过本次实验,我了解到流是⼀种抽象,它负责在数据的⽣产者和消费者之间建⽴联系,并管理数据的流动。
我对⽂件的输⼊输出流有了更深的了解。
六、附录(源程序清单)#include#include#includeusing namespace std;class Student{public:Student(string n,int nu,int cl,char s);string GetName(){return name;}int GetNumber(){return number;}int GetClassno(){return classno;}char GetSex(){return sex;}private:string name;int number;int classno;char sex;};Student::Student(string n,int nu,int cl,char s):name(n),number(nu),classno(cl),sex(s){}int main(){Student a[3] = {Student("Frank",101,1,'M'), Student("Lucy",201,2,'W'), Student("Mike",301,3,'M')}; int i;for(i=0;i<3;i++){ cout << "姓名\t" << a[i].GetName()<< "\t学号\t" << a[i].GetNumber()<< "\t班号\t" << a[i].GetClassno()<<"\t性别\t"<<< endl;}ofstream f;f.open("C:\\student.txt", ios::out);for(i=0;i<3;i++){f << "姓名\t" << a[i].GetName()<< "\t学号\t" << a[i].GetNumber()<< "\t班号\t" << a[i].GetClassno()<<"\t性别\t"<<< endl;}cout<cout<<"student.txt⽂件中的内容如下"<f.close();ifstream f1("C:\\student.txt", ios::in);char ch;while(f1.get(ch))cout<return 0;}。
输入输出流实验报告1.编写一个应用程序,读取一个文本文件的内容。
源程序:Work9_1.javaimport java.io.*;public class Work9_1{public static void main(String args[ ]){File readFile=new File("Student.txt"),writeFile=new File("Hello.txt");try{ FileReader inOne=new FileReader("Student.txt");BufferedReader inTwo= new BufferedReader(inOne);FileWriter tofile=new FileWriter("hello.txt");BufferedWriter out= new BufferedWriter(tofile);String s=null;int i=0;while((s=inTwo.readLine())!=null){i++;out.write(s);out.newLine();}out.flush();out.close();tofile.close();inOne=new FileReader("hello.txt");inTwo= new BufferedReader(inOne);while((s=inTwo.readLine())!=null){System.out.println(s);}inOne.close();inTwo.close();}catch(IOException e){System.out.println(e);}}}所读取的文本文件截图:运行界面:2.编写一个应用程序,将用户从键盘输入的10行文字存入文件。
深圳大学实验报告课程名称:Java实验序号:上机实践9实验名称:统计英文单词&读取Zip文件班级:计算机3 姓名:卢志敏同组人:实验日期:2008 年12 月29 日教师签字:一、实验目的⏹掌握RandomAccessFile类的使用。
⏹掌握ZipInputStream流的使用。
二、实验环境JDK1.5 WinXp SP 3三、实验要求实验1⏹使用RandomAccessFile流统计一篇英文中的单词,要求如下:(1)一共出现了多少个英文单词。
(2)有多少个互不相同的单词。
(3)给出每个单词出现的频率,并将这些单词按频率大小顺序显示在一个Text--Area 中。
实验2⏹读取book.zip,并将book.zip中含有的文件重新存放到当前目录中的book文件夹中,即将book.zip的内容解压到book文件夹中。
四、实验步骤和内容实验1源代码:WordStatistic.javaimport java.io.*;import java.util.Vector;public class WordStatistic{ Vector allWords,noSameWord;WordStatistic(){ allWords=new Vector();noSameWord=new Vector();}public void wordStatistic(File file){try { RandomAccessFile inOne=new RandomAccessFile(file,"rw");//创建指向文件file的inOne的对象RandomAccessFile inTwo=new RandomAccessFile(file,"rw");//创建指向文件file的inTwo的对象long wordStarPostion=0,wordEndPostion=0;long length=inOne.length();int flag=1;int c=-1;for (int k=0;k<=length;k++){ c=inOne.read(); //inOne调用read()方法boolean boo=(c<='Z'&&c>='A')||(c<='z'&&c>='a');if (boo){ if (flag==1){ wordStarPostion=inOne.getFilePointer()-1;flag=0;}}else{ if (flag==0){ if (c==-1)wordEndPostion=inOne.getFilePointer();elsewordEndPostion=inOne.getFilePointer()-1;inTwo.seek(wordStarPostion); //inTwo调用seek方法将读写位置移动到wordStarPostionByte cc[]=newbyte[(int)wordEndPostion-(int)wordStarPostion];inTwo.readFully(cc); //inTwo调用readFully方法String word=new String(cc);allWords.add(word);if(!noSameWord.contains(word))noSameWord.add(word);}flag=1;}}inOne.close();inTwo.close();}catch(Exception e){}}public Vector getAllWords(){ return allWords;}public Vector getNoSameWord(){ return noSameWord;}}StatisticFrame.javaimport java.awt.*;import java.awt.event.*;import java.util.Vector;import java.io.File;public class StatisticFrame extends Frame implements ActionListener{ WordStatistic statistic;TextArea showMessage;Button openFile;FileDialog openFileDialog;Vector allWord,noSameWord;public StatisticFrame(){ statistic=new WordStatistic();showMessage=new TextArea();openFile=new Button("Open File");openFile.addActionListener(this);add(openFile,BorderLayout.NORTH);add(showMessage,BorderLayout.CENTER);openFileDialog=new FileDialog(this,"打开文件对话框",FileDialog.LOAD);allWord=new V ector();noSameWord=new Vector();setSize(350,300);setVisible(true);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});validate();}public void actionPerformed(ActionEvent e){ noSameWord.clear();allWord.clear();showMessage.setText(null);openFileDialog.setVisible(true);String fileName=openFileDialog.getFile();if(fileName!=null){ statistic.wordStatistic(new File(fileName));allWord=statistic.getAllWords();noSameWord=statistic.getNoSameWord();showMessage.append("\n"+fileName+"中有"+allWord.size()+"个英文单词");showMessage.append("\n其中有"+noSameWord.size()+"个互不相同的英文单词");showMessage.append("\n按使用频率排列: \n");int count[]=new int[noSameWord.size()];for(int i=0;i<noSameWord.size();i++){ String s1=(String)noSameWord.elementAt(i);for(int j=0;j<allWord.size();j++){ String s2=(String)allWord.elementAt(j);if(s1.equals(s2))count[i]++;}}for(int m=0;m<noSameWord.size();m++){ for(int n=m+1;n<noSameWord.size();n++){ if(count[n]>count[m]){ String temp=(String)noSameWord.elementAt(m);noSameWord.setElementAt((String)noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);int t=count[m];count[m]=count[n];count[n]=t;}}}for(int m=0;m<noSameWord.size();m++){showMessage.append("\n"+(String)noSameWord.elementAt(m)+":"+count[m]+"/"+allWord.size()+" ="+(1.0*count[m])/allWord.size());}}}}StatisticMainClass.javapublic class StatisticMainClass{ public static void main(String args[]){ new StatisticFrame();}}实验2源代码ReadZipFile.javaimport java.io.*;import java.util.zip.*;public class ReadZipFile{public static void main(String [] args){ File f = new File("book.zip");File dir = new File("Book");byte b[] = new byte[100];dir.mkdir();try{ ZipInputStream in = new ZipInputStream(new FileInputStream(f));ZipEntry zipEntry =null;while((zipEntry=in.getNextEntry())!=null){File file = new File(dir,zipEntry.getName());FileOutputStream out = new FileOutputStream(file);int n=-1;System.out.println(file.getAbsolutePath()+"的内容");while((n=in.read(b,0,100))!=-1){ String str= new String(b,0,n);System.out.println(str);out.write(b,0,n);}out.close();}in.close();}catch(IOException ee){System.out.println(ee);}}}运行效果截屏:五、实验后的练习在StatisticFrame的showMessage中增加单词按字典序排序输出的信息。
实验八输入输出流1.实验目的1、掌握字符输入、输出流的用法2、掌握使用Scanner类解析文件3、掌握Console流的使用2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。
1) 实验1举重成绩单2) 实验2统计英文单词3) 实验3密码流4) 实验4学读汉字5)实验5 读取Zip文件2、设计编写程序完成以下任务。
1)修改实验2,要求按字典顺序输出全部不相同的单词。
2)参考实验3编写一个程序,程序运行时,要求用户输入的密码是:hello。
如果用户输入了正确的密码。
程序将输出“你好,欢迎你!”。
程序允许用户2次输入的密码不正确,一旦超过2次,程序将立刻退出。
3)在本机的磁盘系统中,找一个文件夹,利用File类的提供方法,列出该文件夹中的所有文件的文件名和文件的路径,执行效果如下:路径是xxx的文件夹内的文件有:文件名:abc.txt路径名:c:\temp\abc.txt--------------------------------------------文件名:def.txt路径名:c:\temp\def.txt知识点:File管理4)使用java的输入输出流将一个文本文件的内容读出并在控制台将文件中的内容打印出来。
(参考书上P184页)5)从控制台输入一串字符串,将该串字符串写入到磁盘某位置上的out.txt文件中去。
(参考教材P183页)6)使用java的输入输出流将一个文本文件的内容按行读取,每读一行就顺序添加行号,并写入到另一个文件中.7)定义一个Person类,包含姓名、年龄、身份证号码属性。
有一个带参数的构造方法用于对所有属性赋值,还有一个study的方法,里面只打印一条“我喜欢学习”的话。
写一个Test类,里面实例化若干个Person对象,并将这些对象写入到obj.txt文件中去。
8)创建c:/test.txt文件并在其中输入"hello world"创建一个输入流读取该文件中的文本并且把小写的l变成大写L再利用输出流写入到d:\test.txt中实现步骤:(1)在本地硬盘C盘下创建一个文件test.txt(2)创建一个包含main()方法的类,并在main中编写代码(3)运行代码并且测试结果实现过滤器的功能效果显示:知识点:IO字符流、String常用方法3.实验步骤略4.评分标准1.A——内容功能完善,编程风格好,人机接口界面好;2.B——内容功能完善,编程风格良好,人机接口界面良好;3.C——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。
实验八、输入/输出实验一、实验目的了解模型机输出寄存器的结构及控制方法,掌握手动输出控制和程序输出控制的基本方法,以便学会与外设之间的数据交换方法。
二、实验要求使用CP226实验平台,完成数据的输入与输出控制,并能得到准确的实验结果。
三、实验内容分别采用手动控制方式(脱机方式)和微程序控制方式(联机方式)以BCD码的方法输入和输出两位学生学号的后两位(假设学号分别为10112025、10112008,则后两位的BCD 码分别是25H和08H)。
其具体内容如下:1.采用手动控制方式,将某位学生学号以BCD码的方式通过IN寄存器输入到累加器A,然后再输出到输出寄存器OUT中(IN寄存器的输入端内部已经连接到了K23..K16,所以不必再连线,此时J1要与J2相连);2.采用微程序控制方式,将某位学生学号以BCD码的方式输入到累加器A,然后在输出到输出寄存器OUT中。
相关的代码如下:IN ;通过输入寄存器IN输入数据到累加器A中,数据在K23..L16上OUT ;将累加器A中数据输出到输出寄存器OUT,结果可以从LED灯上看出IN ;通过输入寄存器IN输入数据到累加器A中,数据在K23..L16上OUT ;将累加器A中数据输出到输出寄存器OUT,结果可以从LED灯上看出END请在微程序控制的层面上跟踪和分析上述指令的执行过程,并完成程序跟踪表8-1。
表8-1:程序跟踪表(只跟踪前两条指令)四、实验电路下面是输入寄存器IN、输出寄存器OUT和输出选择器的电路图图8-1 输入寄存器IN的电路图图8-2 输出寄存器OUT的电路图图8-3 数据输出到总线的选择电路图五、实验接线与控制信号设置1.实验内容1(手动方式)手动方式的实验连线请同学们自己考虑完成,这里要注意:写入累加器时AEN=0、OUTEN=1,而写入OUT寄存器时,AEN=1、OUTEN=0。
2.实验内容2(联机方式)联机实验要注意下述连接:●拔掉实验仪上所有的手工连接的接线;●用8 芯电缆连接J1 和J2;●将控制方式开关KC拨到“微程序”方向。