您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 《Java面向对象程序设计》实验-实验八(输入输出流)
广西科技大学计通学院《Java面向对象程序设计》实验实验八输入输出流学生姓名:×××学号:×××班级:×××指导老师:×××专业:计算机科学与技术提交日期:×××年××月××日实验报告内容1.实验目的掌握字符输入、输出流用法;掌握使用Scanner类解析文件;掌握Console流的使用。2.实验内容实验教材-第12章实验1、2、3字符输入输出流;Scanner类和Console类。要求:完善程序,给出实验结果截图;完成试验后练习。3.程序代码及运行结果:实验1举重成绩单//AnalysisResult.javaimportjava.io.*;importjava.util.*;publicclassAnalysisResult{publicstaticvoidmain(String[]args){FilefRead=newFile(score.txt);FilefWrite=newFile(scoreAnalysis.txt);try{Writerout=newFileWriter(fWrite);BufferedWriterbufferWrite=newBufferedWriter(out);Readerin=newFileReader(fRead);BufferedReaderbufferRead=newBufferedReader(in);Stringstr=null;while((str=bufferRead.readLine())!=null){doubletotalScore=Fenxi.getTotalScore(str);str=str+总成绩:+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();}bufferRead.close();bufferWrite.close();}catch(IOExceptione){System.out.println(e.toString());}}}//Fenxi.javaimportjava.util.*;publicclassFenxi{publicstaticdoublegetTotalScore(Strings){Stringregex=[^0123456789.];StringdigitMess=s.replaceAll(regex,*);StringTokenizerfenxi=newStringTokenizer(digitMess,*);doubletotalScore=0;while(fenxi.hasMoreTokens()){doublescore=Double.parseDouble(fenxi.nextToken());totalScore=totalScore+score;}returntotalScore;}}//score.txt姓名:张三,抓举成绩106kg,挺举189kg。姓名:李四,抓举成绩108kg,挺举186kg。姓名:周五,抓举成绩112kg,挺举190kg。运行结果如图1所示图1实验2统计英文单词//WordStatistic.javaimportjava.io.*;importjava.util.*;publicclassWordStatistic{VectorStringallWord,noSameWord;Filefile=newFile(english.txt);Scannersc=null;Stringregex;WordStatistic(){allWord=newVectorString();noSameWord=newVectorString();regex=[\\s\\d\\p{Punct}]+;//正则表达式try{sc=newScanner(file);sc.useDelimiter(regex);}catch(IOExceptionexp){System.out.println(exp.toString());}}voidsetFileName(Stringname){file=newFile(name);try{sc=newScanner(file);sc.useDelimiter(regex);}catch(IOExceptionexp){System.out.println(exp.toString());}}voidWordStatistic(){try{while(sc.hasNext()){Stringword=sc.next();allWord.add(word);if(!noSameWord.contains(word))noSameWord.add(word);}}catch(Exceptione){}}publicVectorStringgetAllWord(){returnallWord;}publicVectorStringgetNoSameWord(){returnnoSameWord;}}//OutputWordMess.javaimportjava.util.*;publicclassOutputWordMess{publicstaticvoidmain(String[]args){VectorStringallWord,noSameWord;WordStatisticstatistic=newWordStatistic();statistic.setFileName(hello.txt);statistic.WordStatistic();allWord=statistic.getAllWord();noSameWord=statistic.getNoSameWord();System.out.println(共有+allWord.size()+个英文单词);System.out.println(有+noSameWord.size()+个互不相同英文单词);System.out.println(按出现的频率排列:);intcount[]=newint[noSameWord.size()];for(inti=0;inoSameWord.size();i++){Strings1=noSameWord.elementAt(i);for(intj=0;jallWord.size();j++){Strings2=allWord.elementAt(j);if(s1.equals(s2))count[i]++;}}for(intm=0;mnoSameWord.size();m++){for(intn=m+1;nnoSameWord.size();n++){if(count[n]count[m]){Stringtemp=noSameWord.elementAt(m);noSameWord.setElementAt(noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);intt=count[m];count[m]=count[n];count[n]=t;}}}for(intm=0;mnoSameWord.size();m++){doublefrequency=(1.0*count[m])/allWord.size();System.out.printf(%s:%-7.3f,noSameWord.elementAt(m),frequency);}}}运行结果如图2所示图2实验3密码流//PassWord.javaimportjava.io.*;publicclassPassWord{publicstaticvoidmain(String[]args){booleansuccess=false;intcount=0;Consolecons;char[]passwd;cons=System.console();while(true){System.out.print(输入密码:);passwd=cons.readPassword();count++;Stringpassword=newString(passwd);if(password.equals(tiger123)){success=true;System.out.println(您第+count+次输入的密码正确!);break;}else{System.out.println(您第+count+次输入的密码+password+不正确!);}if(count==3){System.out.println(您+count+次输入的密码都不正确!);System.exit(0);}}if(success){Filefile=newFile(score1.txt);try{FileReaderinOne=newFileReader(file);BufferedReaderinTow=newBufferedReader(inOne);Strings=null;while((s=inTow.readLine())!=null){System.out.println(s);}inOne.close();inTow.close();}catch(IOExceptionioe){}}}}//score.txt姓名:张三,抓举成绩106kg,挺举189kg。姓名:李四,抓举成绩108kg,挺举186kg。姓名:周五,抓举成绩112kg,挺举190kg。运行结果如图3所示图34.实验后的练习:实验1有如下格式的成绩单(文本格式)score.txt。姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。姓名:周五,数学68分,物理80分,英语77分。要求按行读入取成绩单,并在该行的后面尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。//AnalysisResult.javaimportjava.io.*;importjava.util.*;publicclassAnalysisResult{publicstaticvoidmain(String[]args){FilefRead=newFile(score.txt);FilefWrite=newFile(scoreAnalysis.txt);try{Writerout=newFileWriter(fWrite,true);BufferedWriterbufferWrite=newBufferedWriter(out);Readerin=newFileReader(fRead);BufferedReaderbufferRead=newBufferedReader(in);Stringstr=null;while((str=bufferRead.readLine())!=null){doubletotalScore=Fenxi.getTotalScore(str);str=str+总分:+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();}bufferRead.close();bufferWrite.close();}catch(IOExceptione){System.out.println(e.toString());}}}//Fenxi.javaimportjava.util.*;publicclassFenxi{publicstaticdoublegetTotalScore(Strings){Scannerscanner=newScanner(s);scanner.useDelimiter([^0123456789.]+);doubletotalScore=0;while(scanner.
本文标题:《Java面向对象程序设计》实验-实验八(输入输出流)
链接地址:https://www.777doc.com/doc-6959864 .html